我正在使用控制台IO来读取文件并在我的IDE窗口中显示它(我正在使用Netbeanz)
package javaapplication1;
import java.util.*;
import java.io.*;
public class JavaApplication1
{
public static void main(String[] args) throws FileNotFoundException
{
String data;
Scanner myscan = new Scanner(new File("foo.txt"));
while ( myscan.hasNextLine())
{
data = myscan.nextLine();
System.out.println(data);
}
myscan.close();
}
}
出于某种原因,我无法打开文件:foo.txt
虽然我把它放在与我的应用程序相同的文件夹中
以下是我放置foo.txt
我收到以下异常
Exception in thread "main" java.io.FileNotFoundException: foo.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.util.Scanner.<init>(Scanner.java:656)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:21)
我如何解决此问题以及发生了什么?
答案 0 :(得分:2)
我认为最可能的原因是找不到文件。
当您打开文件时,它会从您的工作目录中查找。
我认为对于项目根源的netbeans来说。
在这种情况下,真实文件名为src/javaapplication1/foo.txt
而不是foo.txt
。
如果您只需要该文件,并且不需要指向任何文件,则可以将其嵌入到应用程序中并使用输入流进行读取。
答案 1 :(得分:1)
File
采用绝对路径。你可以试试这个
InputStream is = JavaApplication1.class.getResourceAsStream("foo.txt");
myscan = new Scanner(is);
答案 2 :(得分:0)
试试这个
URL url = JavaApplication1.class.getResource("sample.txt");
File f = new File(url.toURI());
Scanner scan = new Scanner(f);
while(scan.hasNext()){
System.out.println(scan.next());
}