我正在尝试这段代码:
通过在我的示例中使用此代码,我总是得到一个FileNotFoundException
,尽管在读取 FileInputStream 时该文件夹存在于外部存储中。
这是我的代码:
public void exportdata()
{
try
{
myInput = new FileInputStream("/data/data/com.example.hello/databases/BikeMaintenance.db");
File directory = new File("/sdcard/BikeMaintenance/Data/");
// Create the folder if it doesn't exist:
if (!directory.exists())
{
directory.mkdirs();
}
OutputStream myOutput = new FileOutputStream(directory.getPath()+"/BikeMaintenance.backup");
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0)
{
myOutput.write(buffer, 0, length);
msg="Backup Succesfull!";
Toast.makeText(MainPage.this,msg,Toast.LENGTH_SHORT).show();
}
// Close and clear the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
catch (FileNotFoundException e)
{
msg="FileNotFoundException";
Toast.makeText(MainPage.this,msg,Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
catch (IOException e)
{
msg="Backup Unsuccesfull!";
Toast.makeText(MainPage.this,msg,Toast.LENGTH_SHORT).show();
}
}
我哪里错了?这可能是什么原因?我为此搜索了解决方案,但没有找到解决方案。
这是 logcat 输出:
java.io.FileNotFoundException: /data/data/com.example.hello/databases/BikeMaintenance.db:打开 失败:ENOENT(没有这样的文件或目录) 在 libcore.io.IoBridge.open(IoBridge.java:416) 在 java.io.FileInputStream.(FileInputStream.java:78) 在 java.io.FileInputStream.(FileInputStream.java:105) 在 com.example.hello.MainPage.exportdata(MainPage.java:625) 在 com.example.hello.MainPage.backup(MainPage.java:692) 在 com.example.hello.MainPage$1.onClick(MainPage.java:494) 在 com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4745) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 在 dalvik.system.NativeStart.main(本机方法) 引起:libcore.io.ErrnoException:打开失败: ENOENT(没有这样的文件或目录) 在 libcore.io.Posix.open(本机方法) 在 libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 在 libcore.io.IoBridge.open(IoBridge.java:400) ... 14 更多