java - 如何用 Java 替换大文件的第一行?

标签 java file file-io replace line

我想用 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/

相关文章:

java - 将文件数据读入 JTable

java - 需要构建实用程序,该实用程序将使用 JSON SIMPLE api 根据嵌套 JSON 文件中的键检索值

java - JDK9 NetBeans Dev - JNI 教程期间编译错误

android - 以编程方式检索 Android 中的文件大小

Python:将列表逐行写入文件

c - 在 C 语言中使用 fopen 打开文件

java - 在打开时更新 JPopupMenu 菜单项

java - 平滑运动 Opengl ES 2.0

android - 有没有办法从 Android 的 Assets 文件夹中将文件作为 File 对象打开?

C++非空终止字符数组输出