2

我确定我在这里遗漏了一些基本的东西。我正在尝试在我的驱动器上创建一个新文件,但出现错误:

Exception in thread "main" java.io.FileNotFoundException: C:\ProgramData\msena\test.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileReader.<init>(FileReader.java:55)
at net.meosoft.relatetoit.core.HibernateSessionFactory.main(HibernateSessionFactory.java:89)

我目前的代码是:

    final File file = new File("C:\\ProgramData\\uname2\\test.txt");
    final BufferedReader in = new BufferedReader(new FileReader(file));
    while(in.ready()) {
        System.out.println(in.readLine());
    }
    in.close();

目前有什么问题?我只想阅读,即使它在那里(所以应该制作文件)。

4

4 回答 4

9

Java 不会自动检查 File() 是否存在,也不会在您询问时自动创建它。

您需要执行以下操作之一:

  1. 添加检查文件是否存在:if(file.exists()) { ... }.
  2. 添加一个检查,类似于上面,但如果它不存在,调用:file.createNewFile();。这将在文件系统上创建一个新文件供您使用。

如果这仍然不起作用,我会检查您对该目录是否具有写权限。:)

于 2012-08-14T01:06:22.650 回答
2

类表示文件的File路径,而不是文件本身。如果文件不存在 ( !File.exists()),当您尝试访问它时将引发异常。确保文件的路径正确,并且您有权从该位置读取。

如果要创建文件,可以使用File.createNewFile().

于 2012-08-14T01:06:39.027 回答
0

这是创建文件的方法。

Formatter output;//pointer to an object that will write to a file
public void createFile(){
try{
  output = new Formatter("C:\\ProgramData\\uname2\\test.txt");
  //test.txt is the name of the file to be created
  //create file in the same folder called test.txt
  //if existed overwrite it
    }
  catch(FileNotFoundException e){
  System.err.println("Error creating file"+e.getMessage());
 }

在 main 中调用 createFile()

 CreateTextFile file = new CreateTextFile();
 file.createFile();
于 2012-08-14T01:17:06.290 回答
0

检查您的文件名。它不应包含任何冒号。

于 2017-02-17T10:04:26.067 回答