import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import android.content.Context; import android.os.Environment; public class Fileservice { /** * 存儲用戶密碼的方法 * * @param context * @param user * @param psd */ public static boolean saveUserInfo(Context context, String user, String psd) { /* * SD卡,也就是手機的外部存儲設備,將數據保存在SD卡中 SD卡在做寫操作的時候,必須給權限,讀操作不需要加權限 */ try { //TODO---理解Environment中的常量 if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { System.out.println("外部存儲設備的路徑:" + Environment.getExternalStorageDirectory()); File file = new File( Environment.getExternalStorageDirectory(), "user.txt"); //File file = new File("mnt/sdcard/", "user.txt");這句代碼和上面的代碼的效果是等價的 // 需要存儲的數據 String str = user + "##" + psd; // 輸出流,進行文件的讀寫操作 FileOutputStream out = new FileOutputStream(file); out.write(str.getBytes()); out.close(); return true; } else { return false; } } catch (Exception e) { return false; } } public static String getUserInfo(Context context) { try { //判斷sd卡是否已經掛載的狀態,如果是掛載的狀態就是可讀可寫 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File file = new File(Environment.getExternalStorageDirectory(), "user.txt"); //下面對文件流操作的方式是一致的 FileInputStream fileInputStream = new FileInputStream(file); InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream); BufferedReader reader=new BufferedReader(inputStreamReader); //BufferedReader的流操作對象,可以讀取一行 String str=reader.readLine(); return str; }else{ return null; } } catch (Exception e) { return null; } } }
注意對sd卡文件的讀寫的操作,需要添加權限。android.permission.WRITE_EXTERNAL_STORAGE,通過可視化工具添加,或手動添加都可以。