1

我有一个可以包含大约数百万条记录的分隔文件,现在我想在进一步处理之前从分隔文件中删除第一行。

第一行的长度是可变的,它根据文件类型而有所不同。现在我已经对 FileChannel 和 RandomAccessFile 进行了阅读,这被认为是删除第一行的最佳方法。

但是我无法弄清楚如何获取第一行的长度并将其删除。

4

4 回答 4

4

不要删除它,只是read-and-ignore

如果您必须准备文件,因为文件处理单元无法处理第一行不正确的文件,那么您必须读取并重写它。没有可用的 I/O 操作可以从文件系统中的文件中删除内容。

于 2011-07-15T06:44:33.250 回答
3

感谢您的投入。根据相同,我想出了一个从分隔管道文件中删除第一行的解决方案。

下面提到的是一个代码片段

RandomAccessFile raf = new RandomAccessFile("path to ur delimited file", "rw");
FileChannel fileChannel = raf.getChannel(); 
raf.readLine();     
raf.seek(raf.getFilePointer());         
int len = (int) (raf.length() - raf.getFilePointer());
byte[] bytearr = new byte[len];         
raf.readFully(bytearr, 0, len);         
fileChannel.truncate(0);            
raf.write(bytearr,0,len);
于 2011-07-18T09:58:29.150 回答
3

用于readLine()逐行读取,只需省略第一行并在处理中考虑其他行

于 2011-07-15T06:38:42.477 回答
0

您可以使用 aBufferedReader和 useBufferedReader.readLine()在处理之前“删除”第一行。从这里您可以继续处理其余的行或将它们存储到文件中以供以后处理。后一种选择可能不是您可用的最有效的选择。

于 2011-07-15T06:40:18.517 回答