如何将ArrayList的字符串输出到新文件中?

时间:2015-09-07 08:56:43

标签: java string arraylist

大家好我有这个示例文本文件,其中peopel的名称被粘在一起,它们之间没有任何间距。我是否可以将它放入bufferedreader并创建一个ArrayList来将值存储在字符串中,然后按名称分隔字符串。

文本文件详细信息:

charles_luiharry_pinkertonarlene_purcellwayne_casanova

我的代码:

try {
    BufferedReader in = new BufferedReader(new FileReader(filename));
    String str;

    List<String> list = new ArrayList<String>();
    while ((str = in.readLine()) != null) {
        list.add(str);
    }
    String[] stringArr = list.toArray(new String[0]);

    FileWriter writer = new FileWriter("new_users.txt");
    for (String ss : list) {
        writer.write(ss);
    }
    writer.close();

} catch (IOException ioe) {
    ioe.printStackTrace();
}

预期产出:

charles_lui

harry_pinkerton

arlene_purcell

wayne_casanova

实际输出:

示例文件的副本。

3 个答案:

答案 0 :(得分:0)

只需在作家中添加行分隔符:

writer.write(ss);
writer.write(System.lineSeparator());

如果您的操作系统出现问题,请使用System.getProperty( "line.separator" )

答案 1 :(得分:0)

BufferedReader.readLine()从输入中读取并返回一行,该行以\n\r\n结尾。它无法检测输入文件中名称之间的边界。更好地准备名称在不同行上的输入。

答案 2 :(得分:0)

人类很难成功地将姓氏与下一个名字的名字分开,你怎么能指望一台计算机呢?

建议的解决方案 -

  1. 修改示例文件并在两个名称之间添加一个分隔符(例如&#39 ;;&#39;)。

  2. 通过连接文件中的所有行来创建一个冗长的字符串。连接时删除&#39; \ n&#39;或者&#39; \ r \ n&#39;从行尾。 (可选 - 使用StringBuffer获得性能)。

  3. 将该字符串拆分为有效名称的数组&#39;。 这可以通过在冗长的字符串上调用split(&#39 ;;&#39;)方法来完成,并使用分隔符作为参数。

  4. 然后,从阵列打印。