私はこのコードを試しています:
私の例でこのコードを使用することにより、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(ネイティブ メソッド) で 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以上