0

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();
    }

}
4

0 に答える 0