这是我的代码。输入包含动漫(日本漫画)的名称,我将它存储在anime.txt的testfile中,我按字母顺序排列它们并将其写回另一个文件名animeout.txt。
输入文件不包含任何逗号或方括号,但输出文件包含它。
public class Main {
public static ArrayList<String> read(String filePath) throws IOException {
ArrayList<String> names = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new FileReader(filePath));
int numRead = 0;
String line;
while ((line = reader.readLine()) != null) {
names.add(line + "\n");
numRead++;
}
System.out.println("\n\n count " +numRead);
reader.close();
System.out.println(names);
return names;
}
public static void write(ArrayList<String> input) throws IOException
{
文件文件=新文件(“Animeout.txt”); file.createNewFile();
FileWriter writer = new FileWriter(file);
writer.write(input);
writer.flush();
writer.close();
}
public static void main(String args[]) throws IOException
{
ArrayList<String> names2 = new ArrayList<String>();
String path= "anime.txt";
String test;
names2 = read(path);
Collections.sort(names2, null);
// System.out.println(names2);
write(names2);
}
}
输入文件大约有200行。以下只是一个小例子
One piece
Naruto/naruto shippuden
Bleach
Fullmetal alchemist brotherhood
Fate/stay night
Fairy tale
Blue exorcist
Soul eater
Death note
输出文件包含,和[
count 105
[11 eyes
, A certain magical index
, A certain magical index II
, Aldnoah.Zero
, Angel beats!
, Another
, Asu no yoichi
, Bay blade
, Beelzebub
, Ben-To
答案 0 :(得分:3)
String str = "[12,34,45]";
String out = str.replaceAll(",|\\[|\\]","");
输出:
123445
答案 1 :(得分:1)
为什么使用ObjectOuputStream
?这适用于您希望序列化Java对象并在以后恢复它们的时候。我不明白为什么你需要它。
只需使用FileWriter,就像这样:
public static void write(ArrayList<String> input) throws IOException
{
try
{
File file = new File("Animeout.txt");
FileWriter fw = new FileWriter(file);
for (int i = 0; i < input.size(); i++) {
fw.append(input.get(i) + "\n");
}
}
finally
{
try {
if (fw != null)
fw.close();
}
catch (Exception e) {
// ignore
}
}
}
答案 2 :(得分:1)
您的write
方法很不幸。尝试这样的事情(并在读取行时删除+ "\n"
):
public static void write(ArrayList<String> lines) throws IOException
{
File file = new File("Animeout.txt");
PrintStream ps = null;
try {
ps = new PrintStream(file);
for (final String line : lines) {
ps.println(line);
}
} finally {
if (ps != null) { ps.close(); }
}
}
您使用的ObjectOutputStream
不适合简单地编写文本行。
最后,如果您只想对文本文件的行进行排序,至少在POSIX系统上,您可以使用
进行排序。$ sort anime.txt > Animeout.txt
从命令行。