Android 将文件从系统存储器(/data/data…)复制到外部存储器

Android 将文件从系统存储器(/data/data…)复制到外部存储器,android,file-io,Android,File Io,我想从/data/data复制一个文件。。。到外部SD卡!但是,我发现了这个问题: 日志消息:04-04 12:01:19.271:DEBUG/carbonant(9623):/username.usercar.settings.dat(没有这样的文件或目录) 我想,如果没有“额外”代码,我不能简单地访问这个文件。 以下是我的代码(必要的行): 调用函数的行: case R.id.exporter: final SharedPreferences preferences

我想从/data/data复制一个文件。。。到外部SD卡!但是,我发现了这个问题: 日志消息:04-04 12:01:19.271:DEBUG/carbonant(9623):/username.usercar.settings.dat(没有这样的文件或目录)

我想,如果没有“额外”代码,我不能简单地访问这个文件。 以下是我的代码(必要的行):

调用函数的行:

case R.id.exporter:
            final SharedPreferences preferences = PreferenceManager
            .getDefaultSharedPreferences(context);
    String fileName = getResources().getString(R.string.fileName);
    fileDir = "" + preferences.getString("login", "") + "."+ preferences.getString("marque", "") + ".";
    Import myImport = new Import(this,fileDir+fileName);
            myImport.transfer();
            return true;
Android清单(必要代码):

那么,遗漏了什么?
谢谢。

要使您的文件位于“文件”目录(假定其名称为settings.dat),请使用以下方法:

String filePath = this.getFilesDir().getAbsolutePath() + File.separator + "settings.dat";
Import myImport = new Import(this,filePath);
如果文件本身是原始资源,请按照以下步骤进行复制


(确保您有写入外部存储器的权限…

我认为问题出在您要复制的文件路径上。你能告诉我们你是如何得到
nom
的吗?@MByD:请看我编辑的帖子。@MByD:正如你在日志消息中看到的,它只显示了最后一个文件(不是所有路径),我想这就是为什么编译器没有“找到”它:\。文件实际位于哪里?能否显示完整路径?@MByD:app存储数据的文件存储在/data/data/carbonant.android.com/files/@MByD:yourActivity有问题!我当前调用导入对象的活动是“保存”。当我放入字符串mainDirPath=Save.getFilesDir().getParent()时;我有错误。@MByD:这是错误消息:无法从ContextWrapper类型对非静态方法GetFileDir()进行静态引用。您应该调用该方法
This.GetFileDir().getAbsolutePath()
保存.getFilesDir().getAbsolutePath()
因为这是一个应该在对象而不是类上调用的方法。@Andronienn-检查此帖子:否。您应该传递类似这样的内容来导入:
this.getFileDir()+File.separator+“settings.dat”
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="carburant.android.com"
      android:versionCode="1" android:versionName="0.1">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-sdk android:minSdkVersion="8" />
private void copyfile(String srFile, String dtFile){
        try{
            File f1 = new File(srFile);
            File f2 = new File(dtFile);
          InputStream in = new FileInputStream(f1);
          OutputStream out = new FileOutputStream(f2);

          byte[] buf = new byte[4096];
          int len;
          while ((len = in.read(buf)) > 0){
            out.write(buf, 0, len);
          }
          in.close();
          out.close();
          Toast.makeText(context, "Export effectué", Toast.LENGTH_SHORT).show();
        }
        catch(FileNotFoundException ex){
            Toast.makeText(context, "File Not found", Toast.LENGTH_SHORT).show();
            String x=ex.getMessage();
            Log.d("Carburant", x);
        }
        catch(IOException e){
            Toast.makeText(context, "Echec", Toast.LENGTH_SHORT).show();      
        }
      }
String filePath = this.getFilesDir().getAbsolutePath() + File.separator + "settings.dat";
Import myImport = new Import(this,filePath);