找不到Java文件

时间:2014-01-26 08:51:22

标签: java exception file-io

我有以下代码用于使用Apache POI在Java中读取Excel工作表。虽然该文件存在,但为什么它会给我一个FileNotFound异常?

import org.apache.poi.hssf.usermodel.HSSFSheet;
import java.io.FileInputStream;
import java.io.File;


    public class ReadFromExcel {

        public static void main(String[] args) {

            FileInputStream file = new FileInputStream(new File("C:\\Personal\\test.xlsx"));

        }
    }

我刚刚从Windows资源管理器中复制并粘贴了文件位置,因此我知道该文件确实存在。然后为什么Java无法找到它?

与"文件"使用相同的路径class而不是" FileInputStream"它工作正常。 FileInputStream类中的路径有什么特别之处?

3 个答案:

答案 0 :(得分:0)

也许前两个'\'只代表一个'\',所以你可以使用文件路径为“C:\\ Personal \ test.xlsx”

答案 1 :(得分:0)

建议:致电File.canRead()以查看您是否有权打开该文件。

Java new File() says FileNotFoundException but file exists

  

有三种情况可能会引发FileNotFoundException。

     
      
  1. 指定的文件不存在。
  2.   
  3. 指定的文件实际上是一个目录。
  4.   
  5. 由于某种原因,无法打开指定的文件进行阅读。
  6.   

答案 2 :(得分:0)

试试这段代码:

import org.apache.poi.hssf.usermodel.HSSFSheet;
import java.io.FileInputStream;
import java.io.File;
import java.io.FileNotFoundException;


public class ReadFromExcel {

    public static void main(String[] args) throws FileNotFoundException {
        File f=new File("C:"+File.separator+"Personal"+File.separator+"test.xlsx");
        FileInputStream file=null;
        if(f.exists()) {
            file = new FileInputStream(f);
            //rest of code
        } else{
            System.out.println("The file does not exist!Please enter correct filename!");
        }
    }
}

我有三点要指出:

  1. 首先你还没有添加一个try / catch块。我的IDE根本就不让它编译!
  2. 如果您使用文件路径,因为它们依赖于操作系统,建议使用File.separator而不是使用“\”或“/”。这样可以使您的代码更具可移植性。
  3. 使用f.exists()检查文件是否存在可以让您知道您尝试将文件作为参数传递给FileInputStream。 当然会有所帮助!!