我正在使用Scanner
来阅读文件内容。为此,我使用以下代码。
public static void main (String[] args) throws IOException {
File file = new File("/File.txt");
Scanner sc = new Scanner(file);
while(sc.hasNextLine()) {
// Until the end
System.out.print(sc.nextLine());
}
sc.close();
}
但是这段代码总是抛出FileNotFoundException
。我试过谷歌搜索,但我找不到在哪里检查文件。其次,我在几乎每个目录中创建了具有相同名称的文件,以检查代码何时捕获文件的存在。
您可以在包中看到我创建了一个名为 File.txt 的文件,以便代码可以在找到它时找到它。
在Java文档中,我知道File接受String参数为
File file = new File("file_name");
但是这里的什么样的或什么是参数,却没有被告知。我可以得到帮助吗?
答案 0 :(得分:1)
我认为你想要File file = new File("File.txt");
而不是File file = new File("/File.txt");
,摆脱斜线。如果您想要的是相对路径,则需要.\File.txt
正如@deterministicFail在评论中所说,硬编码路径分隔符不是一个好主意,而是使用System.getProperty("path.separator");
这样你的代码应该在多个plataforms中工作,所以你的代码将是:
使其独立于平台(假设您使用的是相对路径):
File file = new File("." + System.getProperty("path.separator") + "File.txt");
答案 1 :(得分:0)
替换
行File file = new File("/File.txt");
与
File file = new File(".\\File.txt");
或
File file = new File("File.txt");
答案 2 :(得分:0)
我从来没有像你那样做过,但这就是我读文件的方式。
这是班级FileInpuStream
的目的。我使用缓冲区来获取字节。
如果只是路径问题,为什么不简单地使用完整路径?您可以从文件信息中复制粘贴它。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
FileInputStream fis = null;
try {
// object I use to read files
fis = new FileInputStream(new File("File.txt"));
byte[] buf = new byte[8];
int n = 0;
// while there is something in the file
while ((n = fis.read(buf)) >= 0) {
for (byte bit : buf) {
// do what you want
System.out.print("\t" + bit + "(" + (char) bit + ")");
System.out.println("");
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (fis != null)
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
答案 3 :(得分:0)
File f=new File("testFile.txt");
对于这种推荐,您需要将文件放在您的eclipse项目的根目录中(与src并行)。只有在使用Eclipse IDE时才会出现此问题。
此类问题的最佳解决方案是检查文件的AbsolutePath
System.out.println(f.getAbsolutePath());
它将为您提供代码查找文件的路径。
答案 4 :(得分:0)
如果您在工作目录中查找文件然后使用“File.txt”或“./File.txt”,则有两种可能性。在Windows的情况下,还有一个选项是使用“。\ File.txt”。
如果这不是您要查找的内容,您可以在实例化文件后立即使用两个sysout中的任何一个来检查文件引用的路径,这将为您提供计算机上的绝对路径。
File f = new File("/File.txt");
的System.out.println(f.getAbsolutePath());
的System.out.println(f.getAbsoluteFile()getAbsolutePath());
答案 5 :(得分:-1)
尽量不要使用 File.txt 中的 / ,如果确实需要,请使用反斜杠代替 \ ,因为你'在Windows中重新