2015年10月13日 星期二

android 寫入檔案 (簡短文字) FileInputStream, FileOutputStream

寫入簡短文字可使用寫入文字檔方法, 如複雜便要用SQLite

版面要加入一個editView, 一個textView 及 兩個 Button (editView1, textView2, btnWrite, btnRead)

輸入字於 editView1, 按下 btnWrite 便會寫入檔案 output 及顯示檔案路徑 (toast), 按下 btnRead 便會讀出檔案及顯示於 textView2





注意: 讀取中文字, 中文字每個要 2 個 Byte.

MainActivity.java

import android.content.Context;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class MainActivity extends ActionBarActivity {

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

        final EditText txtWrite = (EditText) findViewById(R.id.editText1);
        final TextView txtRead = (TextView) findViewById(R.id.textView2);

        Button btnTxtRead = (Button) findViewById(R.id.btnRead);
        Button btnTxtWrite = (Button) findViewById(R.id.btnWrite);


        btnTxtWrite.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View arg0) {

                try {
                    FileOutputStream fos = openFileOutput("output", Context.MODE_PRIVATE);
                    fos.write(txtWrite.getText().toString().getBytes());
                    fos.close();

                    File file = new File(getFilesDir() + "/" + fos);
                    Toast.makeText(getApplicationContext(), file.getAbsolutePath(), Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

        btnTxtRead.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View arg0) {

                FileInputStream fos = null;
                BufferedInputStream buffered = null;

                try {
                    fos = openFileInput("output");
                    buffered = new BufferedInputStream(fos);
                    byte[] buffbyte = new byte[200];
                    txtRead.setText("");
                    do {
                        int flag = buffered.read(buffbyte);
                        if (flag == -1) {
                            break;
                        } else {
                            txtRead.append(new String(buffbyte), 0, flag);
                        }
                    }while (true);
                    buffered.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

沒有留言:

張貼留言