附加文件导致覆盖(Java)

所以我正在创建一个CSV文件,每次动作发生时我都想将数据写入文件。 我遇到的问题是它会在第二次进入时覆盖数据。 如何将数据添加到文件末尾?

public boolean save_to_csv(){ //check if directory exists, if not create the folder File folder = new File(Environment.getExternalStorageDirectory() + "/HKA_CAL"); //Environment.getExternalStorageDirectory() get the location of external storage boolean success = true; if(!folder.exists()) { success = folder.mkdir(); } if (success) { //success is true if folder has successfully been created //now we can create/check if the file exists File stored_hka = new File(Environment.getExternalStorageDirectory()+"/HKA_CAL/Stored_values.csv"); boolean file_existed=true; try{ if(!stored_hka.exists()){ stored_hka.createNewFile(); file_existed=false; } FileOutputStream fOut = new FileOutputStream(stored_hka); OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); if(!file_existed){ //if the file did not exist we need to write the titles of the csv myOutWriter.append("Calibration Tracking\r\n"); myOutWriter.append(",ZERO1,,Zero2,,cal1,,cal2,,CALIBRATION FACTORS\r\n"); myOutWriter.append("Date,Stab,Read,Stab,Read,Stab,Read,Stab,Read,Unit S/N,F Zero,F Offset,F Factor\r\n"); } myOutWriter.append("Date" +","+get_step3_stab()+","+get_step3_read() +","+get_step6_stab()+","+get_step6_read() +","+get_step8_stab()+","+get_step8_read() +","+get_step11_stab()+","+get_step11_read() +","+get_sn_num()+","+get_f_zero() +","+get_f_offset()+","+get_f_factor()+"\r\n" ); myOutWriter.close(); fOut.close(); } catch(Exception e){ return false; } return true; } else { return false; } } 

而不是做

 new FileOutputStream(stored_hka); 

 new FileOutputStream(stored_hka, true); 

这将以附加模式打开文件stored_hka ,而不是覆盖内容。 有关更多信息,请参阅FileOutputStream的javadoc (String name,boolean append)

构造FileWriter或FileOutputStream时,有一个构造函数参数,允许您将其置于追加模式:

 new FileOutputStream( "/path/to/file", true ) 

更改

 FileOutputStream fOut = new FileOutputStream(stored_hka); 

 FileOutputStream fOut = new FileOutputStream(stored_hka, true); 

使用包含布尔值的FileOutputStream 构造函数进行追加

 FileInputStream("valid path of file", true); 

它将以追加模式打开文件。 布尔值是指您是否要以追加模式打开文件。