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
,这是您知道您想要读取的文件不存在的地方,您可以创建它。