我正在尝试从文件中删除某些行。我的文件是一个 .txt,它看起来像这样:
[ITEMS]
[BANK]
[FRIENDS]
[EOF]
当我的程序运行时,它会在这个文件中写入行。现在我想做的是有一个方法,当我调用它时,它将删除[BANK] 和 [FRIENDS]之间的所有行。它不能删除任何其他内容。留下一个空行。
如果您需要更多信息,请告诉我!
我正在尝试从文件中删除某些行。我的文件是一个 .txt,它看起来像这样:
[ITEMS]
[BANK]
[FRIENDS]
[EOF]
当我的程序运行时,它会在这个文件中写入行。现在我想做的是有一个方法,当我调用它时,它将删除[BANK] 和 [FRIENDS]之间的所有行。它不能删除任何其他内容。留下一个空行。
如果您需要更多信息,请告诉我!
这是部分完成的代码,向您展示必须做什么的想法,但它可能有一些缺陷,它使用 Google Guava - http://code.google.com/p/guava-libraries/
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import com.google.common.io.Files;
public class LinesDeleter {
private static boolean between;
public static void main(String[] args) throws IOException {
File file = new File("somePath");
deleteLinesBetweenFromFile("line1", "line2", file);
}
private static void deleteLinesBetweenFromFile(String start, String end,
File file) throws IOException {
List<String> readLines = null;
List<String> newLines = new ArrayList<String>();
Charset charset = Charset.defaultCharset();
readLines = Files.readLines(file, charset);
if (readLines != null) {
for (String line : readLines)
if ( !isBetweenBannedLines(line, start, end))
newLines.add(line);
File to = new File("somefile");
Files.write(writeAsSingleLines(newLines), to, charset);
}
}
private static CharSequence writeAsSingleLines(List<String> newLines) {
// TODO Auto-generated method stub
return null;
}
private static boolean isBetweenBannedLines(String line, String start,
String end) {
if (line.equals(start)) {
between = true;
return true;
}
if (line.equals(end)) {
between = false;
return true;
}
if (between)
return true;
return false;
}
}
您需要做的(如果您还没有做的话)是有一些文件内标记来识别字段(例如 [BANK] 或 [FRIENDS])何时开始或结束。如果您像这样格式化文件:
#Start Bank Section
<some bank data>
<some more bank data>
#End Bank Section
<junk you want to get rid of>
<more junk you want to get rid of>
<even more junk you want to get rid of>
#Start Friends Section
...
然后您可以编写一个函数来读取每个部分并将其转换为字符串,然后您可以根据需要将其输出到新的或覆盖的文件中。
如果您无法控制文件的格式,则需要某种方式来区分行,这首先需要有关文件格式的更详细信息。
如果您需要在 Bank 和 Friends 部分之间放置任何内容(例如空行),您只需在写入 Bank 和 Friends 之间的文件中写入一个由换行符(“\n”)组成的字符串即可非常轻松地做到这一点要归档的朋友部分。