Java 数据阅读器跳过我的空新行 (\n)

Posted

技术标签:

【中文标题】Java 数据阅读器跳过我的空新行 (\\n)【英文标题】:Java data reader skips my empty new lines (\n)Java 数据阅读器跳过我的空新行 (\n) 【发布时间】:2011-11-18 00:24:45 【问题描述】:

好的,我尝试了所有方法,但找不到答案。我的数据阅读器在读取 txt 文件时会跳过空的下一行。 它应该从 txt 文件中删除所有 cmets 并按原样打印其余数据。我的阅读器确实剥离了 cmets 并打印了数据,但它跳过了空的新行..

MyDataReader.java

public String readLine()

    String buf = new String();
String readStr = new String();

int end = 0;
int done = 0;

try

    // checks if line extraction is done and marker has non null value
    while (done != 1 && marker != null)
    
    readStr = theReader.readLine(); // Reads the line from standard input

    if (readStr != null)
    
        /* If the first character of line isnt marker */
        if (readStr.length() > 0)
        
            if (!readStr.substring(0, 1).equalsIgnoreCase(marker))
        
            end = readStr.indexOf(marker);   // checks if marker exists in the string or not
            if (end > 0)
            buf = readStr.substring(0, end);
            else
            buf = readStr;

            done = 1;   // String extraction is done
         
        
    
    else
    
            buf = null;
        done = 1;
    
    

// catches the exception
catch (Exception e)

    buf = null;
    System.out.println(e);


return buf;


TestMyDataReader.java

String myStr = new String();

  myStr = _mdr.readLine();

  while (myStr != null)
  
      //System.out.println("Original String : " + myStr);
      System.out.println(myStr);
      myStr = _mdr.readLine();
  

【问题讨论】:

【参考方案1】:

if (readStr.length() > 0)

这是跳过空行的代码行。

【讨论】:

谢谢.. 我会想办法处理 cmets :D 完成...感谢您指出...我不知道究竟是哪个部分导致了问题。现在它可以正常工作了。 @BhrugeshPatel 这行代码跳过了空行。您还有另一行跳过 cmets 的代码。只需删除这一行。 摆脱它。添加了另一个检查..现在一切正常。【参考方案2】:

此代码中有很多问题,但您要处理的主要问题是 readLine 结果中不包含新行。因此,您的 if 语句不正确(该行实际上是空的

【讨论】:

哈哈……这让我很难过……但我会继续努力的。你能指出你在代码中发现的弱点吗?将不胜感激:)【参考方案3】:

您的阅读器不会在 readStr 中包含换行符,因此在 "\n" 行中读取将使 readStr 为 "",并且

readStr.length() > 0

将评估为假,从而跳过该行。

【讨论】:

以上是关于Java 数据阅读器跳过我的空新行 (\n)的主要内容,如果未能解决你的问题,请参考以下文章

处理来自 JsonReader 的空指针

拆分csv文件,但忽略c#中引号之间的新行

为啥 yocto 跳过我的食谱?

为啥 Visual Studio 在调试时会跳过我的方法?

php 'ISSET' 功能不起作用。或者代码跳过我的 if 语句

Java日常开发的21个坑,你踩过几个?