我想在Java中删除文本文件的第一行。这个文件是几千兆字节,我不想复制。使用来自this post的建议,我试图使用RandomAccessFile这样做,但它写的太多了。
这是我的代码:
RandomAccessFile raInputFile = new RandomAccessFile(inputFile, "rw");
origHeaderRow = raInputFile.readLine();
raInputFile.seek(0);
raInputFile.writeChars(Strings.repeat(" ",origHeaderRow.length()));
raInputFile.close();
如果您想要一些示例输入和输出,请执行以下操作:
在:
first_name,last_name,age
Doug,Funny,10
Skeeter,Valentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10
后:
alentine,9
Patti,Mayonnaise,11
Doug,AlsoFunny,10
在此示例中,在大多数编辑器中,文件正确地以24个空格开头,但已替换了48个字符(包括换行符)。粘贴到这里后,我看到了奇怪的问号。双倍大小的替换使我的事情涉及编码变得混乱,但我尝试了writeUTF具有相同的结果。
答案 0 :(得分:8)
char
是2个字节。
改为使用writeBytes
。
raInputFile.writeBytes(Strings.repeat(" ",origHeaderRow.length()));
来自JavaDoc看起来正是您正在寻找的。 p>
答案 1 :(得分:5)
当您编写字符(在Java中为16位)时,每个字符使用两个字节。
我建议你尝试写下你想要的字节数,否则你的空格会变成nul
和space
字节。