android 讀寫sdcard 一

android 讀寫sdcard 首先需要有sdcard, 如果用真機 確保sdcard 插入,如果是模擬器上開發,需要建立sdcard 的映像文件,

進入到 ANDROID SDK  安裝目錄下的tools 子目錄, 運行命令L

mksdcard -l sdcard 1024M d:/sdcard.img  //注意是L label, 不是1 或者i,sdcard image支持FAT32格式,後面是容量大小 +路徑+文件名

建成後,完成加載sdcard動作 方法有2

1.可以在 命令行方式 打開模擬器 傳入參數 

 emulator -sdcard  d:/sdcard.img

2. 在eclipse 裏 Run>> Run Configuration >> Target 標籤中的Additional Emulator Command Line Options 框下輸入:

 -sdcard d:/sdcard.img運行模擬器就可以模擬插入sdcard時的狀態。

接下來可以開始程序部分了

訪問sdcard 需要聲明訪問權限 menifest.xml 文件中需要額外添加 :

<!-- 在sdcard中創建與刪除文件權限-->

<uses-permission android:name = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

 <!-- 向sdcard寫入數據權限 -->

<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

 <!-- 向sdcard 讀數據權限 , 不讀數據可以不聲明-->
    <uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

java 代碼部分


if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))//判斷存儲卡是否存在
        {   

               try {
                        File sdcardDir = Environment.getExternalStorageDirectory();// 獲取sdcard 路徑
                        path = sdcardDir.getAbsolutePath();
                        File file = new File(path + "/testfile.txt");
                        System.out.println("the file path =" + file.getPath());
                
                        if (!file.exists()) {
                             file.createNewFile();

                         }

                                                 
                String wstr = "write the string to testfile.txt is ok ?";
            /*
             *
             * method 1    
             */
                FileOutputStream fos = new FileOutputStream(file);
                fos.write(wstr.getBytes());
                fos.close();


            }catch (Exception e) {
                    e.printStackTrace();
            }

}

核心部分摘錄如上,

另 附 其他三種方法可以代替 method 1

/*    
             * method 2
                BufferedWriter bufwrt = new BufferedWriter(new OutputStreamWriter(fos));
                bufwrt.write(wstr);
                bufwrt.newLine();
                bufwrt.flush();
                bufwrt.close();
            */

/* method 3 know the size of data.
                RandomAccessFile raf = new RandomAccessFile(file , "rw");
                    //將文件記錄指針移動到最後
                    raf.seek(file.length());
                    // 輸出文件內容
                    raf.write(wstr.getBytes());
                    raf.close();
                   */

/*
                 *
                 * method 4
                 * 引自他人
                 *     
    public static boolean writeFile(byte[] data, String path) {
        DataOutputStream bufferOut = null;
        try {
        bufferOut = new DataOutputStream(new FileOutputStream(path));
        
        bufferOut.write(data);// 通過管道寫入文件
        bufferOut.close();
        return true;
        } catch (IOException e) {
        return false;
        }
                 */



發佈了30 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章