要在当天sdcard中读写数据,首先要获取当前sdcard的工作目录 |
|
为程序添加读写SDCard的权限。在androidManifest.xml文件中添加权限的代码 |
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:hint="这里写入要保存的数据" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="读取数据" android:id="@+id/btnRead" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="写入数据" android:id="@+id/btnWrite" android:layout_gravity="center_horizontal" /> <TextView android:text="Hello World!" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tvShow" android:hint="这里显示要读取的数据" /> |
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText et; private TextView show; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et= (EditText) findViewById(R.id.editText); show= (TextView) findViewById(R.id.tvShow); findViewById(R.id.btnRead).setOnClickListener(this); findViewById(R.id.btnWrite).setOnClickListener(this); } @Override public void onClick(View v) { //判断SD开是否存在,如果不存在则直接退出 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ ;; }else{ System.out.println("手机中没有SD卡"); return; } File sdcard= Environment.getExternalStorageDirectory(); System.out.println("外部存储所在的工作目录"+sdcard.getPath()); switch (v.getId()){ case R.id.btnRead: //读取SD卡数据 File myReadFile =new File(sdcard,"ThisIsMyFile.txt"); if (myReadFile.exists()){ try { FileInputStream fis=new FileInputStream(myReadFile); InputStreamReader isr=new InputStreamReader(fis,"UTF-8"); char[] input=new char[fis.available()]; isr.read(input); isr.close(); fis.close(); String inSting= new String(input); show.setText(inSting); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } break; case R.id.btnWrite: //写数据到SD卡 if (!sdcard.exists()){ System.out.println("当前系统不具备SD卡目录"); return; }else { System.out.println("当前系统具备SD卡目录====="); } try { File myWriteFile =new File(sdcard,"ThisIsMyFile.txt"); myWriteFile.createNewFile(); FileOutputStream fos=new FileOutputStream(myWriteFile); OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8"); osw.write(et.getText().toString()); osw.flush(); osw.close(); fos.close(); Toast.makeText(getApplicationContext(), "文件已经创建完成", Toast.LENGTH_LONG).show(); System.out.println("文件已经创建完成"); } catch (IOException e) { e.printStackTrace(); System.out.println("文件创建失败"); //SD卡读写需要权限 } break; } } } |