我有一个大约300万行的文本文件,我需要用""替换每行的前两个字符.我目前的代码是
String[] lines = content.split("\n");
content = "";
for(int i = 0;i<lines.length;i++){
System.out.println(i);
lines[i].substring(2);
content = content + lines[i];
}
Run Code Online (Sandbox Code Playgroud)
完成需要3-4天左右.有更快的方法吗?
我的整个代码:
try {
String content = readFile("text.txt", StandardCharsets.ISO_8859_1);
content = content.replaceAll("\\d","");
content = content.replaceAll("\\.","");
String[] lines = content.split("\n");
content = "";
for(int i = 0;i<lines.length;i++){
System.out.println(i);
lines[i].substring(2);
content = content + lines[i];
}
PrintWriter out = new PrintWriter("texty text.txt");
out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 11
有更快的方法吗?
是 - 不要执行重复的字符串连接.那是影响你表现的部分.请StringBuilder改用.
它甚至没有做你想要的 - 你没有使用调用的结果substring.
我怀疑你想要这样的东西:
String[] lines = content.split("\n");
StringBuilder builder = new StringBuilder();
for (String line : lines) {
builder.append(line.substring(2));
// I suspect you want this, otherwise you're losing line breaks.
builder.append("\n");
}
String result = builder.toString();
Run Code Online (Sandbox Code Playgroud)
此外,您应该考虑逐行读取文件而不是读取整个文件然后拆分它.例如:
StringBuilder builder = new StringBuilder();
try (BufferedReader reader = ...) {
String line;
while ((line = reader.readLine()) != null) {
builder.append(line.substring(2));
builder.append("\n");
}
}
String result = builder.toString();
Run Code Online (Sandbox Code Playgroud)
除非你真的在任何时候都需要记忆中的所有内容,所以在处理它们时写下这些行:
try (BufferedReader reader = ...,
BufferedWriter writer = ...) {
String line;
while ((line = reader.readLine()) != null) {
// Perform any other manipulations here...
writer.write(line.substring(2));
writer.write("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3786 次 |
| 最近记录: |