我正在尝试使用名为“ helloworld”的txt文件在Java中定义文件。我已将此文件放置在资源文件夹中,并且在制作文件时按如下方式定义它:
File file = new File("/helloworld");
但是在编译时出现此错误
Exception in thread "main" java.io.FileNotFoundException: /helloworld
(No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at Tests.main(Tests.java:15)
这是我尝试执行的全部代码,如果有帮助解决此问题
// Java Program to illustrate reading from FileReader
// using BufferedReader
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.net.URL;
public class Tests
{
public static void main(String[] args)throws Exception
{
File file = new File("/helloworld");
BufferedReader br = new BufferedReader(new FileReader(file));
String st;
while ((st = br.readLine()) != null)
System.out.println(st);
}
}
谢谢您的帮助!
答案 0 :(得分:0)
public File(String pathname)
通过转换给定的路径名字符串来创建新的File实例 转换为抽象路径名。如果给定的字符串是空字符串, 那么结果就是空的抽象路径名。
您正在尝试创建新的File
实例,但是找不到名为helloworld
的文件或其他原因。那就是为什么你得到错误,
Exception in thread "main" java.io.FileNotFoundException: /helloworld
您说您尝试定义一个文件,但是您的代码似乎可读。如果要创建文件
,请尝试以下一个import java.io.*;
import java.nio.charset.StandardCharsets;
class TestDir {
public static void main(String[] args) {
String fileName = "filename.txt";
try (Writer writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(fileName), StandardCharsets.UTF_8))) {
writer.write("write something in text file");
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
这很容易诊断:您指定的路径以斜杠开头,因此,意味着该文件应位于文件系统的根目录中。您最好先去除斜线,然后:
File
对象时,请在代码中指定绝对/相对路径。答案 2 :(得分:0)
如果文件位于资源文件夹中并打算与程序捆绑在一起,则需要将其视为资源而不是文件。
这意味着您不应使用File类。您应该使用Class.getResource或Class.getResourceAsStream方法读取数据:
BufferedReader br = new BufferedReader(
new InputStreamReader(
Tests.class.getResourceAsStream("/helloworld")));
如果要将程序作为.jar文件分发,则这一点尤其重要。 .jar文件是压缩的归档文件(实际上是具有不同扩展名的zip文件),其中包含已编译的类文件和资源。由于它们都被压缩到一个.jar文件中,因此它们根本不是单独的文件,因此File类无法引用它们。
尽管File类对于您要执行的操作没有用,但是您可能希望研究绝对文件名和相对文件名的概念。以/
开头的文件名,您指定的是绝对文件名,这意味着您要告诉程序在特定位置寻找文件-几乎可以肯定不会驻留该文件的位置。
答案 3 :(得分:0)
尝试下面的命令来了解程序正在寻找的文件夹或文件的路径在哪里
System.out.println(file.getAbsolutePath());
使用
File file = new File("/helloworld");
我认为您的程序正在寻找c:\helloworld
,并且helloword
驱动器中没有文件或文件夹的名称为C
如果将helloword.txt
放入C
驱动器中,则
File file = new File("C:\\helloworld.txt");
FileNotFoundException
将消失。