4

Вопрос по new-operator, file, java – undefined

Поэтому я создаю файл 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;
    }



}
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от yawnobleix
5 ответов
  • 2

    менять FileOutputStream fOut = new FileOutputStream(stored_hka);

    менять

    FileOutputStream fOut = new FileOutputStream(stored_hka);
    

    в

    FileOutputStream fOut = new FileOutputStream(stored_hka, true);
    

  • 3

    Когда вы строите свой new FileOutputStream( "/path/to/file", true )

    Когда вы строите свойFileWriter или жеFileOutputStream есть аргумент конструктора, который позволяет вам перевести его в режим добавления:

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

  • 2

    Используйте FileOutputStream

    конструктор который включает логическое значение для добавления

  • 8

    Вместо того чтобы делать new FileOutputStream(stored_hka);

    Вместо того чтобы делать

    new FileOutputStream(stored_hka);
    

    делать

    new FileOutputStream(stored_hka, true);
    

    Это откроет файлstored_hka в режиме добавления вместо перезаписи содержимого. Смотрите Javadoc дляFileOutputStream (имя строки, логическое добавление) для дополнительной информации

  • 1

    Это откроет файл в режиме добавления. Логическое значение для того

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

    хотите ли вы открыть файл в режиме добавления или нет.