写入文本文件而不用Java覆盖

我正在尝试编写一个方法,如果一个文件尚未存在,则生成“log.txt文件”,然后写入该文件。 我遇到的问题是每次调用方法时,它都会覆盖现有的日志。 如何更改方法,以便不是覆盖数据而只是更新文件?

我的写文件方法:

File log = new File("log.txt") try{ if(log.exists()==false){ System.out.println("We had to make a new file."); log.createNewFile(); } PrintWriter out = new PrintWriter(log); out.append("******* " + timeStamp.toString() +"******* " + "\n"); out.close(); }catch(IOException e){ System.out.println("COULD NOT LOG!!"); } 

只需更改PrintWriter out = new PrintWriter(log);

 PrintWriter out = new PrintWriter(new FileWriter(log, true)); 

请改用FileWriter。

 FileWriter(File file, boolean append) 

构造函数中的第二个参数告诉FileWriter将任何给定的输入附加到文件而不是覆盖它。

这是您的示例的一些代码:

 File log = new File("log.txt") try{ if(!log.exists()){ System.out.println("We had to make a new file."); log.createNewFile(); } FileWriter fileWriter = new FileWriter(log, true); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write("******* " + timeStamp.toString() +"******* " + "\n"); bufferedWriter.close(); System.out.println("Done"); } catch(IOException e) { System.out.println("COULD NOT LOG!!"); } 

出于某种原因,其他方法都没有为我工作……所以我尝试了这个并且工作了。 希望能帮助到你..

 JFileChooser c= new JFileChooser(); c.showOpenDialog(c); File write_file = c.getSelectedFile(); String Content = "Writing into file\n hi \n hello \n hola"; try { RandomAccessFile raf = new RandomAccessFile(write_file, "rw"); long length = raf.length(); System.out.println(length); raf.setLength(length + 1); //+ (integer value) for spacing raf.seek(raf.length()); raf.writeBytes(Content); raf.close(); } catch (Exception e) { System.out.println(e); } 
 JFileChooser c= new JFileChooser(); c.showOpenDialog(c); File write_file = c.getSelectedFile(); String Content = "put here the data to be wriiten"; try { FileWriter fw = new FileWriter(write_file); BufferedWriter bw = new BufferedWriter(fw); bw.append(Content); bw.append("hiiiii"); bw.close(); fw.close(); } catch(Exception e) { System.out.println(e); `} 

这是一个简单的例子,它是如何工作的,最好的做法是将try \ catch放入其中但是对于基本用途,这应该可以解决问题。 为此,您有一个字符串和文件路径,因此适用于FileWriter和BufferedWriter。 这将写入“Hello World”(数据变量),然后创建一个新行。 每次运行时,它都会将Data变量添加到下一行。

 import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; String Data = "Hello World"; File file = new File("C:/Users/stuff.txt"); FileWriter fw = new FileWriter(file,true); BufferedWriter bw = new BufferedWriter(fw); bw.write(Data); bw.newLine(); bw.close(); 

试试这个

 public void writeFile(String arg1,String arg2) { try { if (!dir.exists()) { if (dir.mkdirs()) { Toast.makeText(getBaseContext(), "Directory created", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getBaseContext(), "Error writng file " + filename, Toast.LENGTH_LONG) .show(); } } else { File file = new File(dir, filename); if (!file.exists()) { file.createNewFile(); } FileWriter fileWritter = new FileWriter(file, true); BufferedWriter bufferWritter = new BufferedWriter(fileWritter); bufferWritter.write(arg1 + "\n"); bufferWritter.close(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(getBaseContext(), "Error writng file " + e.toString(), Toast.LENGTH_LONG) .show(); } } 

您甚至可以使用FileOutputStream来获取所需内容。 这是如何做到的,

 File file = new File(Environment.getExternalStorageDirectory(), "abc.txt"); FileOutputStream fOut = new FileOutputStream(file, true); OutputStreamWriter osw = new OutputStreamWriter(fOut); osw.write("whatever you need to write"); osw.flush(); osw.close(); 
 BufferedWriter login = new BufferedWriter(new FileWriter("login.txt")); 

是一个示例,如果您想在一行中创建一个文件。