dllsndy 2017-04-18 11:07 采纳率: 0%
浏览 2876
已结题

求助 android 怎么把sd卡的文件复制到U盘中

项目中需要做个SD卡文件复制到U盘的功能,但是直接用流写入不行。没有权限。
读写SD卡的权限4.0以后 不能写入U盘, 写入U盘的权限变成系统权限了。
我想知道复制文件除了流写入还有什么能实现?
不root使用linux命令可以么?在android中怎么使用?
因为我发现第三方的文件管理器可以往U盘里移动文件(ES),
就相当于第三方app在没有root权限情况下是可以往U盘里复制移动文件的。
哪位大神告诉我怎么操作??

<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>这个权限是往U盘写入的权限,但是现在是系统级的权限。所以我不能用IO流操作

    如果使用contentProvider 能不能跳过这个权限 直接往U盘里写入呢??
  • 写回答

1条回答 默认 最新

  • cuilonglong2012 2017-04-18 11:18
    关注

    /**
    * 将文件复制到SD卡
    *
    * @return
    * @throws IOException
    */
    public boolean getSQLiteDatabase() throws IOException {

                // 首先判断该目录下的文件夹是否存在
                File dir = new File(DATABASE_PATH);
                String filename1 = DATABASE_PATH + "/" + DATABASE_NAME;
                if (!dir.exists()) {
                        // 文件夹不存在 , 则创建文件夹
                        dir.mkdirs();
                }
    
                // 判断目标文件是否存在
                File file1 = new File(dir, DATABASE_NAME);
    
                if (!file1.exists()) {
                        Log.i("msg", "没有文件,开始创建");
                        file1.createNewFile(); // 创建文件
    
                }
    
                Log.i("msg", "准备开始进行文件的复制");
                // 开始进行文件的复制
                InputStream input = context.getResources().openRawResource(rawid); // 获取资源文件raw
                                                                                                                                                        // 标号
                try {
    
                        FileOutputStream out = new FileOutputStream(file1); // 文件输出流、用于将文件写到SD卡中
                                                                                                                                // -- 从内存出去
                        byte[] buffer = new byte[1024];
                        int len = 0;
                        while ((len = (input.read(buffer))) != -1) { // 读取文件,-- 进到内存
    
                                out.write(buffer, 0, len); // 写入数据 ,-- 从内存出
                        }
    
                        input.close();
                        out.close(); // 关闭流
    

    // SQLiteDatabase sqlitDatabase = SQLiteDatabase.openOrCreateDatabase(
    // filename1, null);
    return true;
    } catch (Exception e) {
    Log.i("msg", "复制异常");
    return false;
    }

        }
    
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能