使用文件夹保存文本文件时出现问题

时间:2014-10-11 10:31:15

标签: java windows macos save text-files

只是想知道你是否能指出我正确的方向。我的代码是我现在所处的位置,我遇到的问题是它会将data.txt保存到位置,但仅当我不添加文件夹时,例如。 "/data.txt"有效,但"/folder/data.txt"无效。 Logic告诉我,我的代码没有创建文件夹,而是告诉计算机将data.txt保存到名为folder的文件夹中。我的第一个问题是,我的代码是如何修改的?

第二个也是最重要的一点,我一直在查看网络和Stack Overflow,并且已经从user.homeuser.dir以及更多的例子中获得了大量示例,它们都有效,但是再次没有文件夹第1部分中描述的方式。我的主要目标是隐藏(不是字面意思)文件夹中的保存文件,例如。 C:/Program Files/SysAuth/data.txt。这是一个简单的尝试,不允许用户修改分数,原始安全性就是所需要的。我的主要问题是我希望文件路径兼容windows和mac。我无法测试任何兼容性,因为我无法访问Mac。希望你能帮忙。

public statiic void save(){
    String str = "Congratulations";

    file = System.getPropery("user.home");
    fileName = (file + "/folder/data.txt");

    try {
        FileWriter fw = new FileWriter(fileName);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(str);
        bw.close();
    }
    catch(FileNotFoundException e){
        e.printStackTrace();
    }
    catch(IOException e){
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

这听起来像你要问的是如何创建父目录。

File file = new File(filename);
file.getParentFile().mkdirs();

请参阅mkdirs方法here

的文档

最终代码如下所示:

public static void save(){
    String str = "Congratulations";

    file = System.getPropery("user.home");
    File textFile = new File(file + "/folder/data.txt");

    try {
        textFile.getParentFile().mkdirs();
        FileWriter fw = new FileWriter(textFile);
        BufferedWriter bw = new BufferedWriter(fw);
        bw.write(str);
        bw.close();
    }
    catch(FileNotFoundException e){
        e.printStackTrace();
    }
    catch(IOException e){
        e.printStackTrace();
    }
}

至于问题的第二部分......请不要在我的" Program Files"中隐藏内容。使用Java Preferences API的一种正确(也是最简单)方法。有一个很好的教程here实际上根本不需要任何文件操作。

你也可以使用像Jasypt这样的库加密文件,但在这种情况下可能有点过分。