假设需要处理一个大型文件,文件体积大于 1GB。现在需要根据条件从该文件中抽取10KB数据,并将这10KB数据从大型文件中加以删除。按照最简单的思路,就是将要抽取的数据输出到某个文件,再将未抽取的数据到另外一个文件,最后将原来的大型文件删除。这样虽然可以满足功能需求,但是明显很难有良好的性能。我想知道 Java 中有没有方法可以从一个文件中就地(in place)删除部分内容,而不需要输出一个新文件删除旧文件?==================================================
可以更具体的假设该文件的内容如下:CN-001-AAA-123
CN-002-AAA-231
US-001-FSS-343F
CN-890-DLS-11
UK-001-FFS-FFS9
DE-F89-AAA-899
...(以下省略100万行)需要从该文件中找出1000行以CN开头的数据,并将这些数据从文件中删除。
===================================================谢谢!
可以更具体的假设该文件的内容如下:CN-001-AAA-123
CN-002-AAA-231
US-001-FSS-343F
CN-890-DLS-11
UK-001-FFS-FFS9
DE-F89-AAA-899
...(以下省略100万行)需要从该文件中找出1000行以CN开头的数据,并将这些数据从文件中删除。
===================================================谢谢!
你想想,如果文件是分散开的,要怎么才能找到呢?
只能是所有都遍历。想到一个办法,不知道能不能实现。
用多线程,
每个线程读一部分文件,如a读1--10M,2读11-20M。类推
这样是否可以呢。
文件太大,用io太慢了。