Android 读写SDcard (转)

最近有个想法,就是想实现一个读写文件实例,一开始只想读写简单的文件(如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显示出效果图“:

原文地址:https://www.cnblogs.com/zhwl/p/2128180.html