0

Webパネルからコマンドを取得するJavaアプリがあり、コマンドを実行すると、すでに実行されていることがわかるようにどこかに保存されます。次にコマンドを実行するときに、コマンドを実行する前にリストをチェックします。これはPCの場合は正常に機能しますが、Macの場合は機能しないようです。コマンドは保存されますが、新しいコマンドをチェックすると、以前のすべてのコマンドも実行されます。n3.dataに含まれるもの:

1,2,3,4、


各コマンドにはID(この場合は1 2 3および4)が与えられ、アプリは使用したコマンドIDを確認し、IDが指定されたファイル(n3.data)にない場合は実行することになっています
。コードは次のとおりです。 。

public void save(int id) {
    String osName = System.getProperty("os.name");
    if(osName.contains("Windows")){
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(System.getProperty("user.home") + "\\app.data", true));
        bw.write(id + ",");
        bw.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    } else if(osName.contains("Mac")){
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(System.getProperty("user.home") + "/n3.data", true));
            bw.write(id + ",");
            bw.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

public void createNew() {
    String osName = System.getProperty("os.name");
    File win = new File(System.getProperty("user.home") + "\\app.data");
    File mac = new File(System.getProperty("user.home") + "/n3.data");
    if(osName.contains("Windows") && !win.exists()){
    try {
        new File(System.getProperty("user.home") + "\\app.data").createNewFile();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    }else if(osName.contains("Mac") && !mac.exists()){
        try {
            new File(System.getProperty("user.home") + "/n3.data").createNewFile();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

public void saveNew() {
    String osName = System.getProperty("os.name");
    if(osName.contains("Windows")){
    StringBuilder sb = new StringBuilder();
    for (int i : processedIds) {
        sb.append(i + ",");
    }
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(System.getProperty("user.home") + "\\app.data"));
        bw.write(sb.toString());
        bw.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    }else if(osName.contains("Mac")){
        StringBuilder sb = new StringBuilder();
        for (int i : processedIds) {
            sb.append(i + ",");
        }
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter(System.getProperty("user.home") + "/n3.data"));
            bw.write(sb.toString());
            bw.close();
        } catch (IOException ex) {
            ex.printStackTrace();
    }
    }
}

public void loadSave() throws IOException {
    String osName = System.getProperty("os.name");
    if(osName.contains("Windows")){
        File file = new File(System.getProperty("user.home") + "\\app.data");
        if (file.exists()) {
            BufferedReader br = new BufferedReader(new FileReader(file));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            br.close();
            for (String s : sb.toString().split(",")) {
                try {
                    processedIds.add(Integer.parseInt(s));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } else {
            file.createNewFile();
        }
    }else if(osName.contains("Mac")){
        File file = new File(System.getProperty("user.home") + "/n3.data");
        if (file.exists()) {
            BufferedReader br = new BufferedReader(new FileReader(file));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            br.close();
            for (String s : sb.toString().split(",")) {
                try {
                    processedIds.add(Integer.parseInt(s));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } else if (!file.exists()){
            file.createNewFile();
        }
    }
}
4

1 に答える 1

0

私はそれを理解しました、同じ問題を抱えている人は誰でも、ファイルが存在するかどうかをコードが正しくチェックしません。それを修正するだけで動作するはずです。

于 2012-05-13T18:39:58.543 に答える