android从文本文件中删除已知行

时间:2013-11-04 01:16:45

标签: java android

我需要从txt文件中删除一行,我已经知道了这一行的位置。 我知道如何替换读取整个内容的txt文件上的数据,但我想从特定位置删除行。谢谢。

BufferedReader br = new BufferedReader(new FileReader("data/data/"+ PACKAGE_NAME +"/myFile.txt"));

//delete Line on position 2 (as example)


br.close();

2 个答案:

答案 0 :(得分:3)

您可以先阅读File中的所有行,然后将其存储在List<String>中。然后你可以删除索引并回写所有行。也许它可能看起来像:

public void removeLine(final File file, final int lineIndex) throws IOException{
    final List<String> lines = new LinkedList<>();
    final Scanner reader = new Scanner(new FileInputStream(file), "UTF-8");
    while(reader.hasNextLine())
        lines.add(reader.nextLine());
    reader.close();
    assert lineIndex >= 0 && lineIndex <= lines.size() - 1;
    lines.remove(lineIndex);
    final BufferedWriter writer = new BufferedWriter(new FileWriter(file, false));
    for(final String line : lines)
        writer.write(line);
    writer.flush();
    writer.close();
}

用法:

public static void main(String args[]) throws IOException{
    final File file = ...;
    removeLine(file, 2);
}

上面的代码将删除第3行。

答案 1 :(得分:0)

通过jni,使用

  1. open
  2. mmap
  3. memcpy
  4. munmap
  5. ftruncate
  6. close