lua を介して Java で一時ファイルを作成する際に問題があります。コマンドラインからjavaプログラムを起動するとコードは機能しますが、プログラムがLuaプラグインで起動された場合、ファイルは作成されません。
ケース:
コマンドライン> Java Bot !info
- BotAnswer.txt は一時ディレクトリに作成され、ファイルが既に存在する場合は上書きされます
- ファイルには正しいデータが含まれています
Lua による実行
エラー: Java プログラムは開始しますが、BotAnswer.txt は作成されません ... ファイルが既に存在する場合は何も起こりません
ファイルが見つからないか、間違ったデータが含まれています
ファイルが既に存在する場合、古くて間違ったコンテンツがチャットに送信されます
私はいくつかの許可エラーまたはそのようなものがあると思います。
これを修正する方法を教えていただければ、私にとって大きな助けになります。
コード スニペットは次のとおりです。
located in C:\Program Files\TeamSpeak 3 Client\plugins\lua_plugin\testmodule
ルア
if targetMode == 2 then --targetMode is always 2 for this case
os.execute("java Bot " .. message) --Start java program with message as arguments (message = !info)
if message == "!info" then
folderName = os.getenv("TEMP")
fileName = "BotAnswer.txt"
filePath = io.open(folderName .. "/" .. fileName, "r")
answer = filePath:read("*all")
filePath:close()
os.remove(folderName .. "/" .. fileName)
ts3.requestSendChannelTextMsg(serverConnectionHandlerID, answer, fromID) --Send the content of BotAnswer.txt to the teamspeak Chat
end
end
ジャワ
public class Bot {
public static void main(String[] args) {
Bot myBot = new Bot();
String command = myBot.getCommand(args);
String answer = myBot.differentiateCommand(command);
try {
myProcessor.writeAnswerToFile(answer);
} catch (Exception e) {}
}
public String getCommand(String[] args) {
if(args.length == 0) {
System.exit(0);
}
if (args[0].startsWith("!") != true) {
System.exit(0);
}
String message = args[0];
if (message.startsWith("!")) {
String[] msgArray = message.split("!");
message = msgArray[1];
}
return message;
}
public String differentiateCommand(String command) {
String answer = "";
if (command.startsWith("info")) {
answer = "Tis should be the TeamSpeak answer";
}
}
public void writeAnswerToFile(String answer)throws IOException {
String tempDir = System.getenv("TEMP");
File tempFile = new File(tempDir + "/" + "BotAnswer.txt");
tempFile.createNewFile();
FileWriter writer = new FileWriter(tempFile);
writer.write(answer);
writer.flush();
writer.close();
}
}