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(); } } 

你的代码中缺少一些东西 – 有一个没有相应开口支撑的右括号。

但要回答你的问题,首先创建一个File对象,然后使用exists() ,如果exists()返回false ,则使用createNewFile() 。 将File对象而不是文件名传递给FileInputStream构造函数。

顺便说一句,它会花费你更少的时间去谷歌答案,而不是在这里输入你的问题。

要检查path中是否存在文件文件filename ,可以使用new File(path, filename).exists()

如果指定File的文件系统上存在文件或目录,则exists方法返回true。

要validation文件是文件而不是目录,可以使用isFile方法 。

有关更多信息,请参阅java.io.File的javadoc 。

 if(new File("filename").exists()) ... 

它应该做你想要的。

您已经捕获了FileNotFoundException ,这是您知道您想要读取的文件不存在的地方,您可以创建它。