我想读取整个文本文件并将其全部内容存储到单个字符串中。然后我想将字符串打印到控制台窗口。我试过这个:
import java.util.Scanner;
import java.io.*;
public class WritingTextFiles{
public static void main (String [] args) throws IOException{
FileWriter fw= new FileWriter("testing.txt");
Scanner in= new Scanner (System.in);
String testwords=in.nextLine();
fw.write(testwords);
BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );
System.out.print(r);
fw.close();
}
}
打印到控制台窗口的唯一内容是java.io.BufferedReader@18fb397。
任何人都可以向像我这样的新手解释这个吗?我的经验很少,但我当然愿意学习。我愿意接受任何建议。提前谢谢!
答案 0 :(得分:6)
将java.io.BufferedReader@18fb397打印到控制台的原因是因为您将缓冲读取器的引用作为打印参数,而不是要打印的字符串。
BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );
System.out.print(r);
应该是:
BufferedReader r = new BufferedReader( new FileReader( "testing.txt" ) );
String s = "", line = null;
while ((line = r.readLine()) != null) {
s += line;
}
System.out.print(s);
注意我们实际读取了文件的行并将其存储在临时变量中,然后我们将此变量附加到s。然后我们打印s,而不是BufferedReader。
最后一点,最好在完成后关闭文件,你可以调用fw.close(),但是你应该在编写测试字后直接调用它。这是为了确保FileWriter实际上已经写了字符串。
答案 1 :(得分:0)
如果它是一个相对较小的文件,那么单行Java 7+方法就是:
System.out.println(new String(Files.readAllBytes(Paths.get("testing.txt"))));
如果您只想将其读入字符串,那也很简单:
String s = new String(Files.readAllBytes(Paths.get("testing.txt")));
有关详细信息,请参阅https://docs.oracle.com/javase/7/docs/api/java/nio/file/package-summary.html。
干杯!