Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取文本文件并将其打印到控制台窗口?JAVA_Java_File_Text_Java.util.scanner - Fatal编程技术网

如何读取文本文件并将其打印到控制台窗口?JAVA

如何读取文本文件并将其打印到控制台窗口?JAVA,java,file,text,java.util.scanner,Java,File,Text,Java.util.scanner,我想读取整个文本文件,并将其全部内容存储到单个字符串中。然后我想将字符串打印到控制台窗口。我试过这个: import java.util.Scanner; import java.io.*; public class WritingTextFiles{ public static void main (String [] args) throws IOException{ FileWriter fw= new FileWriter("testing.txt");

我想读取整个文本文件,并将其全部内容存储到单个字符串中。然后我想将字符串打印到控制台窗口。我试过这个:

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.


有人能向我这样的新手解释一下吗?我没有多少经验,但我当然愿意学习。我愿意接受任何建议。提前谢谢

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实际上已经写入了字符串。

如果它是一个相对较小的文件,一行Java 7+方法是:

System.out.println(new String(Files.readAllBytes(Paths.get("testing.txt"))));
如果您只想将其读入字符串,这也很简单:

String s = new String(Files.readAllBytes(Paths.get("testing.txt")));
有关更多详细信息,请参阅


干杯

查看BufferedReader类API中的
read()
readLine()
方法:程序将无法编译。我收到一个不兼容的类型错误,需要一个布尔值:while((line=r.readLine()!=null){你能帮我吗?当然,对不起,伙计,我没有测试就写了这段代码。我编辑了我的原始答案以正确编译:)我有,谢谢!有没有一种方法可以读取文件并将其存储到字符串以外的类型中,而字符串也可以在数组中读取?我有一个程序,它将文件的内容组织到数组中,然后它接受用户的输入并将其与文件的组件进行比较,但是对于字符串,需要花费大量的时间来处理对于大型文本文件。有什么建议吗?哦,听起来是个不错的项目,你可以读取文件的块,比如说250行,然后将它们存储在一个数组中,或者存储在你自己的块对象中。然后只需比较你读到的块,你不必一次加载整个文本文件,这样可以很好地扩展。你如何读取特定数量的行rom文件?