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;
        }
                 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值