安卓读写文件操作

AndroidManifest.xml:

//添加读写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

MainActivity.java:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "data";
    private String filename = "text.txt";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn1 = findViewById(R.id.btn1);
        Button btn2 = findViewById(R.id.btn2);
        Button btn3 = findViewById(R.id.btn3);
        Button btn4 = findViewById(R.id.btn4);
        Button btn5 = findViewById(R.id.btn5);
        Button btn6 = findViewById(R.id.btn6);

        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
        btn4.setOnClickListener(this);
        btn5.setOnClickListener(this);
        btn6.setOnClickListener(this);

        }

    @Override
    public void onClick(View view) {
        //获取外部存储sd卡的路径
        File sdcard = Environment.getExternalStorageDirectory();
        //实例化File对象
        File myfile = new File(sdcard, "this my file.txt");
        String i;
        switch (view.getId()) {
            //点击按钮1读取assets文件夹中的文件数据
            case R.id.btn1:

                try {

                    //将文件数据转换成字节流
                    InputStream is = getResources().getAssets().open("text.txt");//文件名
                    //将字节流转换为字符流
                    InputStreamReader isr = new InputStreamReader(is,"UTF-8");//文件编码方式
                    BufferedReader br = new BufferedReader(isr);
                    //逐行读取数据
                    while ((i = br.readLine()) != null){
                        Log.i(TAG,i);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
            //点击按钮2读取raw文件夹中的文件数据
            case R.id.btn2:
                try {

                    InputStream is = getResources().openRawResource(R.raw.text);

                    InputStreamReader isr = new InputStreamReader(is, "UTF-8");

                    BufferedReader br = new BufferedReader(isr);

                    while ((i = br.readLine()) != null) {
                        Log.i(TAG,i);
                    }
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
                //点击按钮三向应用内部存储文件写入文件数据
            case R.id.btn3:
                try {

                    FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
                    OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
                    EditText et = findViewById(R.id.et);
                    //写入数据
                    osw.write(et.getText().toString());
                    //将所有缓冲区的数据强制发送
                    osw.flush();
                    fos.flush();
                    //关闭输出
                    osw.close();
                    fos.close();
                    Toast.makeText(this, "写入完成", Toast.LENGTH_SHORT).show();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
                //点击按钮四读取应用内部存储文件中的文件数据
            case R.id.btn4:
                try {
                    FileInputStream fis = openFileInput(filename);
                    InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
                    //获取filename内容的字节长度
                    char input[] = new char[fis.available()];
                    //读取并存储到input中
                    isr.read(input);

                    isr.close();
                    fis.close();
                    //将读取并存放在input中的数据转换成String输出
                    String readed = new String(input);
                    Toast.makeText(this, ""+readed, Toast.LENGTH_SHORT).show();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
			//点击按钮5向应用外部存储文件中写入文件数据
            case R.id.btn5:
                //判断sd卡是否存在
                if (!sdcard.exists()) {
                    Toast.makeText(this, "当前系统不具备sd卡目录", Toast.LENGTH_SHORT).show();

                }
                System.out.println(sdcard.getAbsolutePath());
                try {
                    //创建文件
                    myfile.createNewFile();
                    Toast.makeText(this, "文件创建完成", Toast.LENGTH_SHORT).show();

                    FileOutputStream fos = new FileOutputStream(myfile);

                    OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");

                    EditText et2 = findViewById(R.id.et2);
                    osw.write(et2.getText().toString());

                    osw.flush();
                    fos.flush();

                    osw.close();
                    fos.close();
                    Toast.makeText(this, "文件写入完成", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
                 //点击按钮6读取应用外部存储文件中的文件数据
            case R.id.btn6:
                if (myfile.exists()) {
                    try {
                        FileInputStream fis = new FileInputStream(myfile);
                        InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
                        char input[] = new char[fis.available()];

                        isr.read(input);

                        isr.close();
                        fis.close();
                        String str = new String(input);
                        Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show();
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    break;
                }
       	 	}
 		}
 	}  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值