首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android将文件从内部存储复制到外部

Android将文件从内部存储复制到外部
EN

Stack Overflow用户
提问于 2015-04-22 07:26:29
回答 2查看 4.1K关注 0票数 1

我正试图通过googling将文件从内部存储卡复制到外部存储卡,我找到了这个答案。

代码语言:javascript
复制
try {
 InputStream in = new FileInputStream("/storage/sdcard1/bluetooth/file7.zip"); // Memory card path
            File myFile = new File("/storage/sdcard/"); // 
            OutputStream out = new FileOutputStream(myFile);
              // Copy the bits from instream to outstream
              byte[] buf = new byte[1024];
              int len;
              while ((len = in.read(buf)) > 0) {
                  out.write(buf, 0, len);
              }
              in.close();
              out.close();  
              session.showToast("file copied sucessfully");
        } catch (FileNotFoundException e) {
             showToast(e.getMessage());
            e.printStackTrace();
        } catch (IOException e) {
             showToast(e.getMessage());
            e.printStackTrace();
        }

它的工作是内部移动到内部或外部存储到外部,但交叉传输不工作,它抛出一个错误Erofs只读文件系统。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 07:53:24

试着做这样的事:

代码语言:javascript
复制
 new FileAsyncTask().execute(files);

// AsyncTask用于后台处理

代码语言:javascript
复制
private class FileAsyncTask extends AsyncTask<ArrayList<String>, Void, Void> {         
    ArrayList<String> files;         
    ProgressDialog dialog;         
    @Override         
    protected void onPreExecute() {             
        dialog = ProgressDialog.show(ActivityName.this, "Your Title", "Loading...");         
    }         
    @Override         
    protected Void doInBackground(ArrayList<String>... params) {              
        files = params[0];             
        for (int i = 0; i < files.size(); i++) {                 
            copyFileToSDCard(files.get(i));                
        }             return null;         
    }         
    @Override         
    protected void onPostExecute(Void result) {             
        dialog.dismiss();         
    }      
} 

//函数将文件复制到SDCard

代码语言:javascript
复制
public void copyFileToSDCard(String fileFrom){
    AssetManager is = this.getAssets();
    InputStream fis;
    try {

        fis = is.open(fileFrom);
        FileOutputStream fos;
        if (!APP_FILE_PATH.exists()) {
            APP_FILE_PATH.mkdirs();
        }
        fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory()+"/MyProject", fileFrom));
        byte[] b = new byte[8];
        int i;
        while ((i = fis.read(b)) != -1) {
            fos.write(b, 0, i);
        }
        fos.flush();
        fos.close();
        fis.close();
    } 
    catch (IOException e1) {
        e1.printStackTrace();
    }
}

public static boolean copyFile(String from, String to) {
try {
    int bytesum = 0;
    int byteread = 0;
    File oldfile = new File(from);
    if (oldfile.exists()) {
        InputStream inStream = new FileInputStream(from);
        FileOutputStream fs = new FileOutputStream(to);
        byte[] buffer = new byte[1444];
        while ((byteread = inStream.read(buffer)) != -1) {
            bytesum += byteread;
            fs.write(buffer, 0, byteread);
        }
        inStream.close();
        fs.close();
    }
    return true;
} catch (Exception e) {
    return false;
}
}
票数 2
EN

Stack Overflow用户

发布于 2015-04-22 07:42:34

试一试,替换这一行:

代码语言:javascript
复制
File myFile = new File("/storage/sdcard/");

通过以下方式:

代码语言:javascript
复制
ContextWrapper cw = new ContextWrapper(getApplicationContext());
     // path to /data/data/yourapp/app_data/imageDir
    File myFile = cw.getDir("imageDir", Context.MODE_PRIVATE);

检查此链接,可能会有所帮助:click here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29790578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档