我想从资源文件夹中获取一个文件(如果它存在)并在那里创建它,如果它没有。我想以文件形式访问它。 class.getResource()在返回URL时不起作用。 class.getResourceAsStream()给出输入流,但是我不能写入它或者我可以以某种方式?
import java.io.File;
import java.io.FileNotFoundException;
public class Statistika {
File file;
public Statistika() {
try {
file = Statistika.class.getResourceAsStream("statistics.txt");
} catch (FileNotFoundException e) {
file = new File("statistics.txt");
}
}
如何使这项工作?
答案 0 :(得分:1)
尝试使用Statistika.class.getClassLoader().getResource(filename);
如果它返回null,则可以创建新的文件/目录。
如果您从jar访问此内容,请使用Statistika.class.getClassLoader().getResourceAsStream(filename);
希望它能解决你的问题。如果您发现任何困难,请告诉我。
答案 1 :(得分:0)
不要在你的捕获区中做file = new File("statistics.txt");
..只需执行以下操作
try {
File file = new File("statistics.txt");
InputStream fis = new FileInputStream(file);
fis = Statistika.class.getResourceAsStream(file.getName());
} catch (FileNotFoundException e) {
}
这与文件是否存在无关。
答案 2 :(得分:0)
File f = new File("statistics.txt");
try {
f.createNewFile();
} catch (IOException ex) { }
InputStream fis = new FileInputStream(f);
使用BufferedReader将内容插入f。
引用的文件答案 3 :(得分:0)
你试过这个吗?
File f = new File(Statistika.class.getResource("resource.name").toURI());
if (!f.isFile()){
f.getParentFile().mkdirs();
f.createNewFile();
}