Android 读写SDcard

    技术2022-05-20  33

    最近有个想法,就是想实现一个读写文件实例,一开始只想读写简单的文件(如txt格式文件),后面想到了读写XML文件,其实无论是写txt文件还是XML文件,其实写入的值都是一个字符串值,所以关键是如何实现读写sdcard里面的文件。

    下面我讲一下如何如写和读txt文件,其实XML文件同样,只不过在写和读之前还要做相应的处理而已

     

      如果你要写SDcard文件,首先你就要有写sdcard操作权限。即要在AndroidManifest.xml文件中加入申请权限

            <!-- 讀寫SDK卡一定要申請權限允可 -->      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

     

       然后你就可以进行写和读操作了。

              /**      * 寫入指定XML文件中的內容      * @param file  文件      * @param destDirStr  文件目錄      * @param szOutText  文件內容      * @return      */     public String writeToSDcardFile(String file, String destDirStr,             String szOutText) {         // 获取扩展SD卡设备状态         String sDStateString = android.os.Environment.getExternalStorageState();         File myFile = null;         // 拥有可读可写权限         if (sDStateString.equals(android.os.Environment.MEDIA_MOUNTED)) {             try {                 // 获取扩展存储设备的文件目录                 File SDFile = android.os.Environment                         .getExternalStorageDirectory();                 // File destDir=new File("/sdcard/xmlfile");                 File destDir = new File(SDFile.getAbsolutePath() + destDirStr);                 if (!destDir.exists())                     destDir.mkdir();                 // Toast.makeText(SDCardTest., text, duration)                 // 打开文件                 myFile = new File(destDir + File.separator + file);                 // 判断是否存在,不存在则创建                 if (!myFile.exists()) {                     myFile.createNewFile();                 }                 // 写数据                 // String szOutText = "Hello, World!";                 FileOutputStream outputStream = new FileOutputStream(myFile);                 outputStream.write(szOutText.getBytes());                 outputStream.close();             } catch (Exception e) {                 // TODO: handle exception             }// end of try         }// end of if(MEDIA_MOUNTED)         // 拥有只读权限         else if (sDStateString                 .endsWith(android.os.Environment.MEDIA_MOUNTED_READ_ONLY)) {             // 获取扩展存储设备的文件目录             File SDFile = android.os.Environment.getExternalStorageDirectory();             // 创建一个文件             myFile = new File(SDFile.getAbsolutePath() + destDirStr                     + File.separator + file);             // 判断文件是否存在,存在的情況下才去讀該文件             if (myFile.exists()) {                 try {                     // 读数据                     FileInputStream inputStream = new FileInputStream(myFile);                     byte[] buffer = new byte[1024];                     inputStream.read(buffer);                     inputStream.close();                 } catch (Exception e) {                     // TODO: handle exception                 }// end of try             }// end of if(myFile)         }// end of if(MEDIA_MOUNTED_READ_ONLY)         // end of func         return myFile.toString();     }         /**      * 讀出指定XML文件中的內容      * @param file  文件      * @param destDirStr  文件目錄      * @param szOutText  文件內容      * @return 返回文件內容      */     public String readContentFromFile(String file, String destDirStr){                 String content=null;         // 获取扩展存储设备的文件目录         File SDFile = android.os.Environment.getExternalStorageDirectory();         // 创建一个文件         File myFile = new File(SDFile.getAbsolutePath() + destDirStr                 + File.separator + file);         // 判断文件是否存在,存在的情況下才去讀該文件         if (myFile.exists()) {             try {                 // 读数据                 FileInputStream inputStream = new FileInputStream(myFile);                 byte[] buffer = new byte[1024];                 inputStream.read(buffer);                 inputStream.close();                                 content=new String(buffer);                             } catch (Exception e) {                 // TODO: handle exception             }// end of try         }// end of if(myFile)                 return content;     }

     

     

    然后我们在外部类实现调用

    写入指定文件:

    SDCardOperate sdOperate=new SDCardOperate();                 sdOperate.writeToSDcardFile("test.xml","/xmlfiles/","helloworld" );

    //XMLWriterOperate.writeXml()

     

    从指定文件中读出:

    SDCardOperate sdOperate=new SDCardOperate();                 String content=sdOperate.readContentFromFile("test.xml","/xmlfiles/");                                 Toast.makeText(SQL2.this, content, Toast.LENGTH_LONG).show();

     

    实现效果如下所示:

     

    用Toast显示出效果图“:


    最新回复(0)