BufferedReader在每行之后添加“,”。用空格替换逗号时面临的问题

时间:2018-11-17 08:38:14

标签: java

在下面的代码中(即在“ filecontents”函数中),我实际上是在尝试打开和读取文件的内容。

示例:输入文件包含ABCD EFGH

在try块中,以下代码行在每行之后添加“,”

            while ((line = reader.readLine()) != null)
            {
              content.add(line);
            }
            return content;

即,如果文件包含内容ABCD EFGH-上面的代码将输出作为ABCD EFGH返回。

有什么方法可以将逗号替换为空格(也许)并将字符串作为ABCD EFGH发送给调用函数吗?

我尝试了不同的方法-ReplaceAll,Replace,List to String,Stringbuffer等,但是每次尝试都会导致其他地方出现错误。

下面是示例代码:

//功能1

private static void read (String file)
{
String filename = "C:\Desktop\Sample.txt";
List<String> records = filecontents (filename);
}

//以上代码将在下面的代码中调用以下代码,其中文件名作为参数传递

private static List<String> filecontents(String file)
{

          List<String> content = new ArrayList<String>();
          try
          {
            //Open the text file
            BufferedReader reader = new BufferedReader(new FileReader(file));               
            String line;

            while ((line = reader.readLine()) != null)
            {
            content.add(line);
            }

            //return content;
            //Finding out a way to remove the commas and pass back the lines 
             (without commas) to the calling function
             reader.close();
          }
          catch (Exception e)
          {
            //Catch block
          }
    return null; 

}

1 个答案:

答案 0 :(得分:2)

BufferedReader的readline()不添加逗号。它读取字符串,直到到达\n\r之类的行分隔符为止。

我猜正在发生的是您的ABCD和EFGH作为两个单独的元素出现在列表中,而您实际上在打印输出中看到的是用逗号分隔这两个元素。

尝试创建一个新的文本文件并手动编写

ABCD EFGH

,无需复制和粘贴。您的文本文件很可能包含隐藏的行分隔符,这些行分隔符弄乱了您的缓冲阅读器并分隔了行。