【发布时间】:2011-04-05 00:48:31
【问题描述】:
我想将文件从 /data/data... 复制到外部 SDCARD!但是,我发现这个问题: 日志消息:04-04 12:01:19.271: DEBUG/Carburant(9623): /username.usercar.settings.dat (没有这样的文件或目录)
我想如果没有“额外”代码,我不能简单地访问这个文件。 这是我的代码(必要的行):
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/Carburant/");
dir.mkdirs();
copyfile(nom,sdCard.getAbsolutePath() + "/Carburant/storeddata.dat");
public Import(Context context,String nom) {
this.context = context;
this.nom=nom;
}
函数被调用的行:
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 Manifest(必要代码):
<?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();
}
}
那么,错过了什么? 谢谢。
【问题讨论】:
-
我认为问题在于您要复制的文件的路径。你能告诉我们你是怎么得到
nom的吗? -
@MByD:请看我编辑的帖子。
-
@MByD:正如您在日志消息中看到的,它只显示最后一个文件(不是所有路径),我想这就是编译器没有“找到”它的原因:\。跨度>
-
文件实际位于何处?你能显示一个完整的路径吗?
-
@MByD:(应用程序存储数据的)文件存储在/data/data/carburant.android.com/files/