使用java在(.txt)文件中的特定行号处插入文本[重复]

Posted

技术标签:

【中文标题】使用java在(.txt)文件中的特定行号处插入文本[重复]【英文标题】:Inserting a text at specific line number in a (.txt) file using java [duplicate] 【发布时间】:2014-02-02 08:36:57 【问题描述】:
 public void urlWriter(int y) throws IOException
            
           File file = new File("C:\\DRIVE\\datas.txt");
           FileWriter fw = new FileWriter(file);
           BufferedReader dummyReader = new BufferedReader(new FileReader(file));

           BufferedWriter latestSource = new BufferedWriter(fw);


          //dummy string to read line by line
          String dooms =null;


         //loop for reading line by line
            for(i=0;i<y;i++) 
               
            while ((dooms=dummyReader.readLine())!=null)
            


               //y line
                latestSource.write(CommonData.entered_direct);
                latestSource.newLine();
                //y+1 line
                latestSource.write(CommonData.entered_cellar);
                latestSource.newLine();
                //y+2 line
                latestSource.write(CommonData.entered_tele);
                latestSource.close();

            
            

尝试逐行读取,然后在特定位置写入。但是同样的问题存在..有人可以帮我吗...????

场景:如果 y 值作为“4”传递,则文本文件中的第 4、5、6 行应替换为新数据。如果有人帮助我,将不胜感激.提前致谢!!

面临的问题:所有数据都写入文本文件的底部,而不是固定在指定的行号

【问题讨论】:

【参考方案1】:

你想要的大概只能通过逐行读取文件来实现

如果是要替换的行之一,则写入新文本。 否则,请写下原行。

然后您将拥有原始文件和一个新文件。您可以相应地重命名它们,这样您还可以备份最后一次更改。

粗略的轮廓:

 open input file (i.e. BufferedReader)
 open new outfile file (i.e. some Writer)
 line = 0
 data = read line from input
 while (there is data) 
    line = line + 1
    if (line >= y && line <= y+2)
        write replaced data
    else
        write data
    data = read line from input
close output file
close input file

【讨论】:

你说得对。接受你的两个拇指规则。但是如何逐行读取并在特定实例中写入?? @DeepakPrabhu 我建议 BufferedReader/BufferedWriter 这样做。 我会尝试逐行读取并在所需的实例上写入。谢谢! @Ingo.Tried 按照你的指示。 FileWriter fw = new FileWriter(file,true);保持为真,在底部添加数据。保持虚假,抹去一切。我该怎么办。 算法我会概述,请务必遵循。【参考方案2】:

有一个名为 RandomAccessFile 的类,这正是您要寻找的。​​p>

【讨论】:

抱歉,我不太清楚这些术语,因为我是新手。 哪个术语?上课? 那个“seek(15)”是做什么的? 在文件中搜索第 15 行。 不,@JuanManuel,它转到第 15 个字节。【参考方案3】:

RandomAccessFileseek() 的帮助下,您可以实现这一目标。

Seek 设置文件指针偏移量,从这个开始测量 文件,在该文件中发生下一次读取或写入。可以设置偏移量 超出文件末尾。将偏移量设置为超出 file 不会改变文件长度。文件长度只会改变 通过在文件末尾设置偏移量之后写入。

RandomAccessFile ra = new RandomAccessFile("abc.txt","rw" );// (file name, mode of file)
          ra.seek(15);// set the poss to overwrite
          ra.writeUTF("garbage");

【讨论】:

【参考方案4】:

已提出此问题,并且有一个用户接受的答案。请看以下链接how to write content in a Specific position in a File

【讨论】:

以上是关于使用java在(.txt)文件中的特定行号处插入文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 sed 或 awk 在特定行号处插入一行

C ++在特定行号的文件中插入一行

在给定行号的文本文件中打印行

使用Javascript在文本区域中的光标处插入文本

将一个文件中的不同文本行插入到一组文件中的特定行的最佳方法[关闭]

使用bat文件复制特定文本行?