xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.cxy.io"> <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS">uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> intent-filter> activity> application> manifest>
字节文件的输入输出流ileInputStream 和 FileOutputStream(InputStream 和 OutputStream的子类,具体实现类)
FileInputStream 和 FileOutputStream分别是InputStream 和 OutputStream的子类,往往使用FileInputStream 和 FileOutputStream这两个子类去就可以从一个指定文件中读取或者向某一个文件中写入数据。
如果创建FileInputStream 和 FileOutputStream对象,那我们必须指定 文件的路径和文件名,对象被创建之后,流就打开了,程序结尾处必须结束流的操作。关闭流,释放资源。
package com.example.cxy.io; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btn,btn1; private String content="今天天气不错"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inintView(); } private void inintView() { btn= (Button) findViewById(R.id.button); btn1= (Button) findViewById(R.id.button2); btn.setOnClickListener(this); btn1.setOnClickListener(this); } @Override public void onClick(View v) { File file =new File("/mnt/sdcard/cxy.txt"); switch (v.getId()) { case R.id.button: try { file.createNewFile(); //实例化一个输出流 FileOutputStream out=new FileOutputStream(file); //FileOutputStream out=new FileOutputStream("/mnt/sdcard/cxy.txt"); //把文字转化为字节数组 byte[] bytes = content.getBytes(); //写入字节数组到文件 out.write(bytes); //关闭输入流 out.close(); Toast.makeText(MainActivity.this, "写入成功", Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); } break; case R.id.button2: try { String text=null; //实例化一个输入流 FileInputStream input=new FileInputStream(file); //把文件中的所有内容转换为byte字节数组 byte[] bytes = new byte[input.available()]; //读取内容 input.read(bytes); //关闭输入流 input.close(); //把bytes字节数组转化为文字 text=new String(bytes); Toast.makeText(MainActivity.this,text, Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } break; } } }
xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.cxy.io.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="写入" android:id="@+id/button" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="55dp"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="输出" android:id="@+id/button2" android:layout_below="@+id/button" android:layout_centerHorizontal="true" android:layout_marginTop="157dp"/> RelativeLayout>