Java 从分隔文件中删除第一行

Java 从分隔文件中删除第一行,java,file-io,filechannel,Java,File Io,Filechannel,我有一个分隔文件,它可以包含大约数百万条记录,现在我想在进一步处理它之前删除分隔文件中的第一行 第一行的长度是可变的,它根据文件类型而不同。。现在我已经阅读了FileChannel和RandomAccessFile,它们被认为是删除第一行的最佳方法 但我无法理解,如何获取第一行的长度并删除它。 < P>使用逐行读取,只需省略第一行,并考虑其他处理中的 < P>使用逐行读取,只需省略第一行,并考虑其他处理“< /P> < P>”,可以使用 BufferedReader < /代码>,并用于“删除”

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

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


但我无法理解,如何获取第一行的长度并删除它。

< P>使用逐行读取,只需省略第一行,并考虑其他处理中的

< P>使用逐行读取,只需省略第一行,并考虑其他处理“< /P> < P>”,可以使用<代码> BufferedReader < /代码>,并用于“删除”。处理前的第一行。从这里,您可以继续处理其余的行,或者将它们存储到一个文件中以供以后处理。后一个选项可能不是您可用的最有效的选项。

您可以使用
BufferedReader
并在处理前使用“删除”第一行。从这里,您可以继续处理其余的行,或者将它们存储到一个文件中以供以后处理。后一个选项可能不是您可用的最有效的选项。

不要删除它,只需阅读并忽略即可

如果由于文件处理单元无法处理第一行不正确的文件而必须准备文件,则必须读取并重写该文件。没有可用的I/O操作可以删除文件系统中文件的内容。

不要删除它,只需读取并忽略即可


如果由于文件处理单元无法处理第一行不正确的文件而必须准备文件,则必须读取并重写该文件。没有可用的I/O操作可以删除文件系统中文件的内容。

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

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

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);

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

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

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);

但是缓冲读取器不是有点重吗。。考虑到该文件有数百万条记录。。。阅读它们。。省略第一行。。重新写回文件是个问题。。。是吗?但是缓冲读卡器不是有点重。。考虑到该文件有数百万条记录。。。阅读它们。。省略第一行。。重新写回文件是个问题。。。是吗?是的。。。我同意你的看法。。考虑到文件中的行,后一个选项不是一个非常有效的选项。。这就是为什么我们选择FileChannel/RandomAccessFile。。。但我不知道该如何确定这条线的终点。。也许我们需要读取字节。。。在第一行结束后。。将指针移到下面。。hwz这??新行由系统属性“line.separator”确定,它将是
\n\r
\r\n
\n
\r
,具体取决于您的操作系统使用的是什么(提供的是最常用的)。是。。。我同意你的看法。。考虑到文件中的行,后一个选项不是一个非常有效的选项。。这就是为什么我们选择FileChannel/RandomAccessFile。。。但我不知道该如何确定这条线的终点。。也许我们需要读取字节。。。在第一行结束后。。将指针移到下面。。hwz这??新行由系统属性“line.separator”确定,它将是
\n\r
\r\n
\n
\r
,具体取决于您的操作系统使用什么(提供的是最常见的)。非常基本的一个显然是它的CSV文件。试试谷歌的opencsv。当读取文件时,只需忽略第一行,问题是什么。。。它不是CSV文件。。这是一个以管道分隔的文本文件..我的错误。。我没有提到相同的…非常基本的一个显然是它的CSV文件。试试谷歌的opencsv。当读取文件时,只需忽略第一行,问题是什么。。。它不是CSV文件。。这是一个以管道分隔的文本文件..我的错误。。我没有提到同样的。。。