我是Java初学者,我正在尝试从现有的文本文件中创建一个读取程序。我已经尽了最大努力,但它继续说“找不到文件!”。我已将“Test.txt”复制到我的包的文件夹 - src和bin中。 请帮助我。我会非常感激的。这是代码 -
package readingandwritingfiles;
import java.io.*;
public class ShowFile {
public static void main(String[] args) throws Exception{
int i;
FileInputStream file_IN;
try {
file_IN = new FileInputStream(args[0]);
}
catch(FileNotFoundException e) {
System.out.println("File Not Found!");
return;
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Usage: ShowFile File");
return;
}
do {
i = file_IN.read();
if(i != -1)
System.out.print((char)i);
} while(i != -1);
file_IN.close();
System.exit(0);
}
}
答案 0 :(得分:0)
如果您只是放置Test.txt,那么程序将查找项目的根文件夹。例: 项目 -src - 包 - -类 -bin -Test.txt Test.txt需要与src和bin位于同一目录中,而不是在它们内部
答案 1 :(得分:0)
将带有相对路径的字符串(或文件)传递给项目文件夹(如果你的文件在src文件夹中,这个应该是" src / Test.txt& #34;,不是" Test.txt" )。
对于读取文本文件,您应该使用FileReader和BufferedReader,BufferedReader有读取已完成行的方法,您可以读取直到找到null。
一个例子:
String path = "src/Test.txt";
try {
FileReader fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while(line != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
} catch (Exception ex) {
}
答案 2 :(得分:0)
如果你的文件夹结构是这样的(src文件夹里面的Text.txt文件)
+src +Text.txt
然后使用此代码
ClassLoader classLoader = ShowFile.class.getClassLoader();
File file = new File(classLoader.getResource("Text.txt").getFile());
file_IN = new FileInputStream(file);
或者如果你的文件夹结构是这样的
+src +somepackage +Text.txt
然后使用此代码
ClassLoader classLoader = ShowFile.class.getClassLoader();
File file = new File(classLoader.getResource("/somepackage/Text.txt").getFile());
file_IN = new FileInputStream(file);
答案 3 :(得分:0)
完成此任务的方法很多!我注意到你指定了args [0],为什么?
// Java Program to illustrate reading from Text File
// using Scanner Class
import java.io.File;
import java.util.Scanner;
public class ReadFromFileUsingScanner
{
public static void main(String[] args) throws Exception
{
// pass the path to the file as a parameter
File file =
new File("C:\\Users\\test.txt");
Scanner sc = new Scanner(file);
while (sc.hasNextLine())
System.out.println(sc.nextLine());
}
}