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 回答