大家好我有这个示例文本文件,其中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
实际输出:
示例文件的副本。
答案 0 :(得分:0)
只需在作家中添加行分隔符:
writer.write(ss);
writer.write(System.lineSeparator());
如果您的操作系统出现问题,请使用System.getProperty( "line.separator" )
答案 1 :(得分:0)
BufferedReader.readLine()
从输入中读取并返回一行,该行以\n
或\r\n
结尾。它无法检测输入文件中名称之间的边界。更好地准备名称在不同行上的输入。
答案 2 :(得分:0)
人类很难成功地将姓氏与下一个名字的名字分开,你怎么能指望一台计算机呢?
建议的解决方案 -
修改示例文件并在两个名称之间添加一个分隔符(例如&#39 ;;&#39;)。
通过连接文件中的所有行来创建一个冗长的字符串。连接时删除&#39; \ n&#39;或者&#39; \ r \ n&#39;从行尾。 (可选 - 使用StringBuffer获得性能)。
将该字符串拆分为有效名称的数组&#39;。 这可以通过在冗长的字符串上调用split(&#39 ;;&#39;)方法来完成,并使用分隔符作为参数。
然后,从阵列打印。