我想用 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 并得到了相同的结果。
最佳答案
char
在 Java 中是 2 个字节。
改用writeBytes
。
raInputFile.writeBytes(Strings.repeat(" ",origHeaderRow.length()));
来自 JavaDoc看起来正是您要找的东西。
关于java - 如何用 Java 替换大文件的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126895/