【问题标题】:BufferedReader not reading entire text fileBufferedReader 没有读取整个文本文件
【发布时间】:2016-10-15 17:26:30
【问题描述】:
                String str = "";
            try {

                BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
                while (br.readLine() != null) {
                    str += br.readLine();
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            String replace = str.replace("HTTP Request: ", "")
                    .replace("Resource URL: ","")
                    .replace("Attribute\t\tDescription", "| Attribute | Type | Description |<P>|----|----|<P>")
                    .replace("Data Type | Max Length | Requirement |", "")
                    .replace("N/A", "Object")
                    .replace("String", "| String")
                    .replace("255 |", "")
                    .replace("Required", "**Required**")
                    .replace("Optional", "**Optional**")
                    .replace("Request Example <P>", "")
                    .replace("Response Example <P>", "Nothing");

            PrintWriter pw = null;

BufferedReader 忽略前 3 行并读取/转换其余行。不确定是什么问题。我尝试过其他 StackOverflow 解决方案,但它们似乎都不起作用!

【问题讨论】:

  • 你查看strreplace的内容了吗?
  • 是的,我 sysout'd str 并且打印时没有前 3 行。

标签: java bufferedreader


【解决方案1】:

问题出在这里:

while (br.readLine() != null)

您检查 br.readLine() 是否不为空的时间您已经阅读了该行。要解决此问题,您可以尝试以下操作:

String line = br.readLine();
while (line != null){
    str +=line;
    line = br.readLine();
}

【讨论】:

  • @Suhail Prasathong 我很高兴我提供了帮助,但请记住接受解决问题的解决方案,它不一定是我的。
【解决方案2】:

你只检查br.readLine()的返回值,而你也应该处理它,这里是通用代码:

StringBuider buffer = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()))) {
    String line;
    while((line = br.readLine()) != null) {
        buffer.append(line);
    }
}

【讨论】:

    【解决方案3】:

    theVoid 已经告诉了问题是什么并给出了解决方案。

    在条件语句是迭代函数的情况下,我总是更喜欢使用

    do{
        //task
        //Iterate and store result in var, like in your case
        var = br.readLine();
    }while(var != null/*check on var rather than executing iteration*/);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-12
      • 2014-01-28
      • 2015-10-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      相关资源
      最近更新 更多