只是想知道你是否能指出我正确的方向。我的代码是我现在所处的位置,我遇到的问题是它会将data.txt
保存到位置,但仅当我不添加文件夹时,例如。 "/data.txt"
有效,但"/folder/data.txt"
无效。 Logic告诉我,我的代码没有创建文件夹,而是告诉计算机将data.txt保存到名为folder的文件夹中。我的第一个问题是,我的代码是如何修改的?
第二个也是最重要的一点,我一直在查看网络和Stack Overflow,并且已经从user.home
,user.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();
}
}
答案 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这样的库加密文件,但在这种情况下可能有点过分。