当前位置: 首页 > 面试题库 >

使用RandomAccessFile在中间插入文本会在此之后删除一些文本

尤研
2023-03-14
问题内容

我的样本代码

    String line = null;
    RandomAccessFile file = new RandomAccessFile("D:/mahtew.txt", "rw");
    System.out.println(file.getFilePointer());
    while((line = file.readLine()) != null){
        System.out.println(line);
        System.out.println(file.getFilePointer());

        if(line.contains("Text to be appended with")){
            file.seek(file.getFilePointer());
            file.write(" new text has been appended".getBytes());
            break;
        }
    }
    file.close();

执行前要演示

one two three
Text to be appended with
five six seven
eight nine ten

执行后的demo.txt

one two three
Text to be appended with
 new text has been appendedten

我也尝试使用setLength来更改文件的长度,然后再添加新文本。但是仍然从输出文件中修剪了一些文本。任何帮助将不胜感激

谢谢马修


问题答案:

RandomAccessFile

随机访问文件的行为就像存储在文件系统中的大字节数组一样。

实际上,在写操作的情况下它并不关心移动数组元素(仅 指针 是先进的)。这样的操作将覆盖现有值:

输出操作从文件指针开始写入字节,然后将文件指针向前移动超过写入的字节。



 类似资料:
  • 问题内容: 我有一个文本很长的字符串,并在里面。我正在尝试删除括号和方括号之间的字符,但是我不知道该怎么做。 该列表与此类似: 该列表不是我正在使用的列表,但非常相似,但简短得多。 谢谢您的帮助。 问题答案: 这应该适用于parens。正则表达式会“消耗”匹配的文本,因此不适用于嵌套的括号。 否则这将找到一组parens …只需循环以查找更多

  • $format = new \Vtiful\Kernel\Format($fileHandle); $style = $format->strikeout()->toResource();

  • 问题内容: 背景 我有一个由詹金斯触发的安装程序,内容如下: 通过phing,与git服务器通信并在单独的构建服务器中进行所需的git版本之间的准备来准备要部署的文件,而无需涉及AWS代码部署(据我所知)。phing版本由Jenkins触发。 我仅将要添加/修改的文件(基于修订的git差异)动态添加到appspec.yml文件。我只准备要添加/修改到路径的文件,并且在Jenkins项目的“高级项目

  • 问题内容: 我打算使用Java擦除文本文件中的最后一行;但是,下面的代码将删除所有内容。 问题答案: 如果要从文件中删除最后一行而不创建新文件,则可以执行以下操作: 从倒数第二个字节开始,查找换行符,然后继续向后搜索,直到找到一个。然后在该换行符之后截断该文件。 如果最后一个字符是换行符(即最后一行的末尾),则从第二个最后一个字节而不是最后一个字节开始。

  • 我目前正在尝试构建一个行为类似于命令shell的应用程序。我想显示我给它的路径(或' 我这样做是为了在用户提交文本时文本字段会被清空。提交后,它将字段的文本设置为我的路径,以达到类似的效果,但用户仍然可以在输入文本时删除该路径。 如何使我的路径文本显示在字段中,但用户无法删除它? 我已经尝试过这个,但它只在提交后更新插入符号位置:

  • 问题内容: 我只是想知道如何在php中删除一组括号和括号本身之间的文本。 范例: ABC(测试1) 我想删除(Test1),只离开ABC 谢谢 问题答案: 是基于Perl的正则表达式替换例程。该脚本的作用是匹配所有出现的右括号,后跟任意数量的字符 而不是 右括号,然后再次跟右括号,然后删除它们: 正则表达式细目: