有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java BufferedReader未返回

我正在使用Java运行一个程序,并将程序的文本输出读入缓冲读取器。然后,我想通过执行以下操作打印出结果:

    while((line=input.readLine()) != null){
        System.out.println(line);
    }

出于某种原因,执行此操作时,readLine()方法在文本的一半左右根本不会返回,程序会无限期地等待。然而,当直接从命令行运行这个程序时,它的输出与预期完全一样,只有100行左右的简单文本。是什么原因导致readLine()在阅读简单文本的中途无法返回


共 (2) 个答案

  1. # 1 楼答案

    您需要像这样将文本文档编码为UTF-8,然后使用扫描仪

    // specify file path
    String filePath = "C:/path/path/file-location/file.txt";
    // make a scanner with the UTF-8 param
    Scanner scanner = new Scanner(new File(filePath),"UTF-8");
    // loop through text 
    while (scanner.hasNextLine()){
       System.out.println(scanner.nextLine());
    }
    

    实际上,有几种方法可以像这样对文本进行编码,但其重要性在于文本编码本身。一旦文档格式正确,您选择读取输入的对象和类将由您自行决定

  2. # 2 楼答案

    What could cause readLine() to not return halfway through reading simple text?

    如果您正在读取文件系统中的文件,这可能是由于文件系统存在问题;e、 g.远程文件服务器没有响应

    如果您正在从套接字读取数据,则可能是远程服务器尚未写入/刷新您尝试读取的数据,或者是网络问题导致数据无法通过

    如果您正在从管道读取数据(例如,另一个程序的输出),则另一个程序尚未写入/刷新您尝试读取的数据

    (另一种情况是从“设备文件”或“/proc”文件系统中的文件或环回文件系统中读取。在这些情况下,很难列举可能的原因。)