Java读取文件,如果文件不存在则创建它。

3

这是我的代码

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是否存在。如果不存在,就必须创建一个新文件。我该怎么做呢? 谢谢

5个回答

6
这里有一个可能的解决方案:
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();
    }
}

您可能还想考虑使用InputStreamReader,指定Charset,而不是使用默认字符集的FileReader... - Jesse

2

你的代码中缺少一对大括号。

回答你的问题,首先创建一个File对象,使用exists()方法判断文件是否存在,如果exists()返回false则使用createNewFile()方法创建文件。将File对象而不是文件名传递给FileInputStream构造函数。

顺便说一句,通过谷歌搜索答案比在这里提问花费的时间更短。


1

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

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

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

有关更多信息,请参见java.io.File的javadoc文档


甚至更好的是 new File(path,filename).exists(),它会自动插入适合你所在操作系统的正确路径分隔符。 - Ceilingfish

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

它应该做你想要的事情。


-1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接