2016-03-04 86 views
0

我想編寫一個程序,它獲得3個文本框值和1個全局變量保存在文本文檔中,但是我想追加到文本文檔中,而不是每次重寫!這是我迄今爲止;如何讀取和寫入文件

public class Proceed extends Activity { 

    // Defining edittext variables and where they will be used 
    EditText edittext; 
    EditText edittext1; 
    EditText edittext2; 

    // Getting global variable to get price data from past activity 
    String PriceResult = Main2Activity.GSTFinal; 

    // Defining textview to show data 
    TextView tvResult2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_proceed); 

     // assigning variables from their respective EditText and textview box 
     edittext = (EditText) findViewById(R.id.Name); 
     edittext1 = (EditText) findViewById(R.id.Phone); 
     edittext2 = (EditText) findViewById(R.id.Address); 
     tvResult2 = (TextView) findViewById(R.id.tvResult2); 
     // Assigning tvresult what string to show 
     tvResult2.setText(PriceResult + ""); 
     // 
    } 

    public void save(View view) { 
     String n1 = edittext.getText().toString(); 
     String n2 = edittext1.getText().toString(); 
     String n3 = edittext2.getText().toString(); 
     String n4 = tvResult2.getText().toString(); 
     String Writetotxtfile = n1 + "," + n2 + "," + n3 + "," + n4; 
     String filename = "myfile"; 
     FileOutputStream outputStream; 

     try { 
      outputStream = openFileOutput(filename, Context.MODE_PRIVATE); 
      outputStream.write(Writetotxtfile.getBytes()); 
      outputStream.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
} 

回答

1

對於讀取文件

public String readFromFile() { 
      File sdcard = Environment.getExternalStorageDirectory(); 
      File file = new File(sdcard,".YOURAPP/myFile.txt"); 
      StringBuilder text = new StringBuilder(); 
      try { 
       BufferedReader br = new BufferedReader(new FileReader(file)); 
       String line; 

       while ((line = br.readLine()) != null) { 
        text.append(line); 
        text.append('\n'); 
       } 
       br.close(); 
      } 
      catch (IOException e) { 
       //You'll need to add proper error handling here 
      } 
      return text.toString(); 
     } 

用於寫文件

public void writeFile(String data){ 
     try { 
      File logFile = new File(Environment.getExternalStorageDirectory().toString(), ".YOURAPP/myFile.txt"); 
      File dirFile = new File(Environment.getExternalStorageDirectory().toString(), ".YOURAPP"); 
      if(!logFile.exists()) { 
       dirFile.mkdir(); 
       logFile.createNewFile(); 
      } 
      BufferedWriter output = new BufferedWriter(new FileWriter(logFile)); 
      output.write(data); 
      output.close(); 
     }catch (Exception e){ 
      System.out.print("Exception e"+e); 
     } 
    } 

對於刪除文件

public void deleteFile(){ 

     File logFile = new File(Environment.getExternalStorageDirectory().toString(), ".YOURAPP/myFile.txt"); 
     File dirFile = new File(Environment.getExternalStorageDirectory().toString(), ".YOURAPP"); 
     if(logFile.exists()) { 
      logFile.delete(); 
      dirFile.delete(); 

     } 
    } 

向menifest添加權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

如何附加到已經寫好的文件? – Kripzy

+0

閱讀文件後,我們必須追加字符串,刪除舊文件,並用附加字符串編寫新文件 –

+0

所有的好東西我想了一下,如何在1分鐘的研究後自己做到這一點:P哈哈 – Kripzy

0

而不是

outputStream = openFileOutput(filename, Context.MODE_PRIVATE); 

使用

outputStream = new FileOutputStream(filename, true); 

這將確保你附加到文件,而不是截斷它。

+0

謝謝!我使用了上面的代碼!但它不會追加! - – Kripzy

0

你所試圖做的是叫做

追加

FileOutputStream有追加Constructor

創建一個文件輸出流以寫入由 指定的File對象表示的文件。

FileOutputStream(File file, boolean append) 

實例的FileOutputStream中時,那麼使用該構造。