在前一篇文章中說道了手機讀寫內存文件的操做,此次主要說的是手機讀寫SD卡文件的操做java
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/read" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/txt1" android:layout_alignParentBottom="true" android:layout_marginBottom="46dp" android:text="@string/read" /> <Button android:id="@+id/write" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/ed1" android:layout_below="@+id/ed1" android:layout_marginTop="84dp" android:text="@string/write" /> <TextView android:id="@+id/txt1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/write" android:layout_below="@+id/write" android:layout_marginTop="72dp" /> <EditText android:id="@+id/ed1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="41dp" android:ems="10" android:inputType="textMultiLine" > <requestFocus /> </EditText> </RelativeLayout>
在AndroidManifest.xml文件中加入:android
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <!-- 在SD卡上建立與刪除權限 --> <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" /> <!-- 向SD卡上寫入權限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Java代碼:app
package com.example.sdcard; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private Button write; private Button read; private EditText ed1; private TextView txt1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); write = (Button) findViewById(R.id.write); read = (Button) findViewById(R.id.read); ed1 = (EditText) findViewById(R.id.ed1); txt1 = (TextView) findViewById(R.id.txt1); write.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub writeSDcard(ed1.getText().toString()); } }); read.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub txt1.setText(readSDcard()); } }); } // 把數據寫入SD卡 private void writeSDcard(String str) { try { // 判斷是否存在SD卡 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 獲取SD卡的目錄 File file = Environment.getExternalStorageDirectory(); FileOutputStream fileW = new FileOutputStream(file.getCanonicalPath() + "/test.txt"); fileW.write(str.getBytes()); fileW.close(); }else{ showMessage("SD卡不存在!!"); } } catch (Exception e) { e.printStackTrace(); } } // 從SD卡中讀取數據 private String readSDcard() { StringBuffer str = new StringBuffer(); try { // 判斷是否存在SD if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { File file = new File(Environment.getExternalStorageDirectory() .getCanonicalPath() + "/test.txt"); // 判斷是否存在該文件 if (file.exists()) { // 打開文件輸入流 FileInputStream fileR = new FileInputStream(file); BufferedReader reads = new BufferedReader( new InputStreamReader(fileR)); String st = null; while ((st =reads.readLine())!=null ) { str.append(st); } fileR.close(); } else { txt1.setText("該目錄下文件不存在"); } }else{ showMessage("SD卡不存在!!"); } } catch (Exception e) { e.printStackTrace(); } return str.toString(); } // 顯示信息 public void showMessage(String msg) { Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }