moy_杨 2017-04-13 09:42 采纳率: 0%
浏览 1072

Android 22 复制raw文件到SD卡大文件(4M)无法复制

Android 22 复制raw文件到SD卡大文件(4M)无法复制,Android5没有这个问题,每次都是读取到10几K就结束,而且不报错

  • 写回答

3条回答 默认 最新

  • oyljerry 2017-04-13 10:34
    关注
     /**  
         * 复制单个文件  
         * @param oldPath String 原文件路径 如:c:/fqf.txt  
         * @param newPath String 复制后路径 如:f:/fqf.txt  
         * @return boolean  
         */   
       public void copyFile(String oldPath, String newPath) {   
           try {   
               int bytesum = 0;   
               int byteread = 0;   
               File oldfile = new File(oldPath);   
               if (oldfile.exists()) { //文件存在时   
                   InputStream inStream = new FileInputStream(oldPath); //读入原文件   
                   FileOutputStream fs = new FileOutputStream(newPath);   
                   byte[] buffer = new byte[1444];   
                   int length;   
                   while ( (byteread = inStream.read(buffer)) != -1) {   
                       bytesum += byteread; //字节数 文件大小   
                       System.out.println(bytesum);   
                       fs.write(buffer, 0, byteread);   
                   }   
                   inStream.close();   
               }   
           }   
           catch (Exception e) {   
               System.out.println("复制单个文件操作出错");   
               e.printStackTrace();   
    
           }   
    
       }   
    
       /**  
         * 复制整个文件夹内容  
         * @param oldPath String 原文件路径 如:c:/fqf  
         * @param newPath String 复制后路径 如:f:/fqf/ff  
         * @return boolean  
         */   
       public void copyFolder(String oldPath, String newPath) {   
    
           try {   
               (new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹   
               File a=new File(oldPath);   
               String[] file=a.list();   
               File temp=null;   
               for (int i = 0; i < file.length; i++) {   
                   if(oldPath.endsWith(File.separator)){   
                       temp=new File(oldPath+file[i]);   
                   }   
                   else{   
                       temp=new File(oldPath+File.separator+file[i]);   
                   }   
    
                   if(temp.isFile()){   
                       FileInputStream input = new FileInputStream(temp);   
                       FileOutputStream output = new FileOutputStream(newPath + "/" +   
                               (temp.getName()).toString());   
                       byte[] b = new byte[1024 * 5];   
                       int len;   
                       while ( (len = input.read(b)) != -1) {   
                           output.write(b, 0, len);   
                       }   
                       output.flush();   
                       output.close();   
                       input.close();   
                   }   
                   if(temp.isDirectory()){//如果是子文件夹   
                       copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);   
                   }   
               }   
           }   
           catch (Exception e) {   
               System.out.println("复制整个文件夹内容操作出错");   
               e.printStackTrace();   
    
           }   
    
       }  
    
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名