Java的。 如何将文本附加到file.txt 的顶部

我需要通过Java添加文本到文本文件的开头。

例如,我有test.txt文件包含数据:

Peter John Alice 

我需要添加(到文件顶部):

 Jennifer 

它应该是:

 Jennifer Peter John Alice 

我有部分代码,但它将数据附加到文件末尾,我需要将文本添加到文件顶部:

  public static void irasymas(String irasymai){ try { File file = new File("src/lt/test.txt"); if (!file.exists()) { file.createNewFile(); } FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); BufferedWriter bw = new BufferedWriter(fw); bw.write(irasymai+ "\r\n"); bw.close(); } catch (IOException e) { e.printStackTrace(); } } 

我试过这个,但这只删除文件中的所有数据而不插入任何文本:

 public static void main(String[] args) throws IOException { BufferedReader reader = null; BufferedWriter writer = null; ArrayList list = new ArrayList(); try { reader = new BufferedReader(new FileReader("src/lt/test.txt")); String tmp; while ((tmp = reader.readLine()) != null) list.add(tmp); OUtil.closeReader(reader); list.add(0, "Start Text"); list.add("End Text"); writer = new BufferedWriter(new FileWriter("src/lt/test.txt")); for (int i = 0; i < list.size(); i++) writer.write(list.get(i) + "\r\n"); } catch (Exception e) { e.printStackTrace(); } finally { OUtil.closeReader(reader); OUtil.closeWriter(writer); } } 

谢谢你的帮助。

在开始写入之前,您可以使用RandomAccessFile并使用seek(long position)方法将光标搜索到0th位置。

正如本帖所述

 RandomAccessFile f = new RandomAccessFile(new File("yourFile.txt"), "rw"); f.seek(0); // to the beginning f.write("Jennifer".getBytes()); f.close(); 

编辑:正如下面许多评论所指出的,此解决方案从头开始覆盖文件内容。 要完全替换内容,可能必须删除重写文件

 File mFile = new File("src/lt/test.txt"); FileInputStream fis = new FileInputStream(mFile); BufferedReader br = new BufferedReader(fis); String result = ""; String line = ""; while( (line = br.readLine()) != null){ result = result + line; } result = "Jennifer" + result; mFile.delete(); FileOutputStream fos = new FileOutputStream(mFile); fos.write(result.getBytes()); fos.flush(); 

这个想法是全部阅读,在前面添加字符串。 删除旧文件。 使用eited String创建新文件。

以下代码对我有用。 同样,它显然会替换文件开头的字节。 如果您可以提前确定需要多少字节的替换,那么您可以使用它。 否则,请按照之前的答案或在此处查看在文本文件Java的开头写入

  String str = "Jennifer"; byte data[] = str.getBytes(); try { RandomAccessFile f = new RandomAccessFile(new File("src/lt/test.txt"), "rw"); f.getChannel().position(0); f.write(data); f.close(); } catch (IOException e) { e.printStackTrace(); }