• 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显示出效果图“:

  • 相关阅读:
    Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
    IP地址资源的分配和管理
    破解中常见的指令及修改
    8086 CPU 寻址方式
    汇编指令速查
    关于ida pro的插件keypatch
    动态方式破解apk进阶篇(IDA调试so源码)
    IDA7.0安装keypatch和findcrypt-yara插件
    Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
    IDA动态调试技术及Dump内存
  • 原文地址:https://www.cnblogs.com/zhwl/p/2128180.html
Copyright © 2020-2023  润新知