使用 FileInputStream 找不到文件
File Not Found w/ FileInputStream
我正在尝试检查并查看我的程序是否正在扫描 File
的内容,但是出现此错误:
Exception in thread "main" java.io.FileNotFoundException: input.txt (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at lottery.main(lottery.java:40)
我没有在我的代码中看到问题,因为我总是这样处理我的文件,似乎无法理解这个问题。
代码:
public static void main(String[] args) throws FileNotFoundException
{
Scanner in = new Scanner(System.in);
System.out.println("Enter the name of the file with the ticket data.");
String input = in.nextLine();
File file = new File(input);
in.close();
Scanner scan = new Scanner(new FileInputStream(file));
int lim = scan.nextInt();
for(int i = 0; i < lim * 2; i++)
{
String name = scan.nextLine();
String num = scan.nextLine();
System.out.println("Name " + name);
}
scan.close();
}
检查是否从输入文件所在目录启动jvm。
如果不是,则不可能通过相对路径找到它。最后将其更改为绝对路径(类似于 /usr/me/input.txt)。
如果文件位于启动 java 程序的目录中,请检查文件的权限。启动 java 程序的用户可能看不到它。
问题是您的程序在当前工作目录中找不到 input.txt
。
查看您的程序 运行 所在的目录,并检查其中是否有一个名为 input.txt
的文件。
A FileInputStream obtains input bytes from a file in a file system. What files are available depends on the host environment.
来自 docs.oracle.com
这意味着您的 FileInputStream 需要提供一个实际的文件系统文件。但是你只在调用 new File() 时创建了一个文件处理程序。所以你需要在调用 file.createNewFile();
的文件系统上创建文件
File file = new File(input); //here you make a filehandler - not a filesystem file.
if(!file.exists()) {
file.createNewFile(); // create your file on the file system
}
Scanner scan = new Scanner(new FileInputStream(file)); // read from file system.
我正在尝试检查并查看我的程序是否正在扫描 File
的内容,但是出现此错误:
Exception in thread "main" java.io.FileNotFoundException: input.txt (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at lottery.main(lottery.java:40)
我没有在我的代码中看到问题,因为我总是这样处理我的文件,似乎无法理解这个问题。
代码:
public static void main(String[] args) throws FileNotFoundException
{
Scanner in = new Scanner(System.in);
System.out.println("Enter the name of the file with the ticket data.");
String input = in.nextLine();
File file = new File(input);
in.close();
Scanner scan = new Scanner(new FileInputStream(file));
int lim = scan.nextInt();
for(int i = 0; i < lim * 2; i++)
{
String name = scan.nextLine();
String num = scan.nextLine();
System.out.println("Name " + name);
}
scan.close();
}
检查是否从输入文件所在目录启动jvm。
如果不是,则不可能通过相对路径找到它。最后将其更改为绝对路径(类似于 /usr/me/input.txt)。
如果文件位于启动 java 程序的目录中,请检查文件的权限。启动 java 程序的用户可能看不到它。
问题是您的程序在当前工作目录中找不到 input.txt
。
查看您的程序 运行 所在的目录,并检查其中是否有一个名为 input.txt
的文件。
A FileInputStream obtains input bytes from a file in a file system. What files are available depends on the host environment.
来自 docs.oracle.com
这意味着您的 FileInputStream 需要提供一个实际的文件系统文件。但是你只在调用 new File() 时创建了一个文件处理程序。所以你需要在调用 file.createNewFile();
的文件系统上创建文件File file = new File(input); //here you make a filehandler - not a filesystem file.
if(!file.exists()) {
file.createNewFile(); // create your file on the file system
}
Scanner scan = new Scanner(new FileInputStream(file)); // read from file system.