的Java读取一个文件,如果它不存在,创建它
这里是我的代码的Java读取一个文件,如果它不存在,创建它
public String path;
public String fileName;
public static void readData() throws IOException{
try {
path="myPath"
fileName="myFileName";
fstream = new FileInputStream(path+fileName);
br = new BufferedReader(new InputStreamReader(fstream));
//do something...//
}
br.close();
} catch (FileNotFoundException ex) {
JOptionPane.showMessageDialog(null, "Reading file error");
Logger.getLogger(LeggiDaFile.class.getName()).log(Level.SEVERE, null, ex);
}
}
我想知道如何检查是否存在的fstream。如果它不存在,则必须创建一个新文件。我怎样才能做到这一点? 谢谢
这里是一个可能的解决方案:
public static void readData() throws IOException
{
File file = new File(path, filename);
if (!file.isFile() && !file.createNewFile())
{
throw new IOException("Error creating new file: " + file.getAbsolutePath());
}
BufferedReader r = new BufferedReader(new FileReader(file));
try
{
// read data
}finally
{
r.close();
}
}
要检查文件filename
是否存在于path
中,您可以使用new File(path, filename).exists()
。
如果指定的File
的文件系统上存在文件或目录,则exists method返回true。要验证文件是文件而不是目录,可以使用isFile method。
查看javadoc for java.io.File了解更多信息。
甚至更好的新文件(路径,文件名).exists()会自动为您所在的操作系统插入正确的路径分隔符。 – Ceilingfish 2011-03-28 20:24:59
好点 - 我编辑了我的答案。谢谢! – Greg 2011-03-28 20:27:07
您已经赶上了FileNotFoundException
,这是您知道您想要阅读的文件不存在并且您可以创建它的地方。
if(new File("filename").exists())
...
它应该做你想要什么。
缺少某些在你的代码 - 有没有对应的左括号右大括号。
但是,为了回答你的问题,首先要创建一个File
对象,并使用exists()
,然后createNewFile()
如果exists()
回报false
。将File
对象而不是文件名传递给构造函数FileInputStream
。
顺便说一句,它会花费你更少的时间来谷歌答案比它在这里输入你的问题。
你可能也想看看使用'InputStreamReader',指定'Charset',而不是使用默认字符集的'FileReader' ... – Jesse 2011-03-28 20:28:22
谢谢Jesse! 你解决了我的问题! – Franky 2011-03-28 21:06:48