資産のファイルにアクセスするにFileNotFoundException

Amirhossein Esmaeeili:

私は私のアプリの内部ファイルディレクトリに資産フォルダからファイルをコピーしようとしているが、それはFileNotFoundExceptionをを投げ続けます

J

ava.io.FileNotFoundException: android.content.res.AssetManager@f252431/wordsdb.ser: open failed: ENOENT (No such file or directory)
2020-04-05 19:44:48.829 11247-11247/stickyapps.zabanamooz W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:496)
2020-04-05 19:44:48.829 11247-11247/stickyapps.zabanamooz W/System.err:     at java.io.FileInputStream.<init>(FileInputStream.java:159)
2020-04-05 19:44:48.829 11247-11247/stickyapps.zabanamooz W/System.err:     at stickyapps.zabanamooz.Managers.WordsManager.copy(WordsManager.java:91)
2020-04-05 19:44:48.830 11247-11247/stickyapps.zabanamooz W/System.err:     at stickyapps.zabanamooz.Managers.WordsManager.<init>(WordsManager.java:46)
2020-04-05 19:44:48.830 11247-11247/stickyapps.zabanamooz W/System.err:     at stickyapps.zabanamooz.MainActivity.onCreate(MainActivity.java:40)
2020-04-05 19:44:48.830 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.Activity.performCreate(Activity.java:7802)
2020-04-05 19:44:48.830 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.Activity.performCreate(Activity.java:7791)
2020-04-05 19:44:48.830 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
2020-04-05 19:44:48.831 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
2020-04-05 19:44:48.831 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
2020-04-05 19:44:48.831 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
2020-04-05 19:44:48.831 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
2020-04-05 19:44:48.831 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
2020-04-05 19:44:48.831 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
2020-04-05 19:44:48.831 11247-11247/stickyapps.zabanamooz W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:107)
2020-04-05 19:44:48.832 11247-11247/stickyapps.zabanamooz W/System.err:     at android.os.Looper.loop(Looper.java:214)
2020-04-05 19:44:48.832 11247-11247/stickyapps.zabanamooz W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7356)
2020-04-05 19:44:48.832 11247-11247/stickyapps.zabanamooz W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2020-04-05 19:44:48.832 11247-11247/stickyapps.zabanamooz W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
2020-04-05 19:44:48.833 11247-11247/stickyapps.zabanamooz W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-04-05 19:44:48.836 11247-11247/stickyapps.zabanamooz W/System.err: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
2020-04-05 19:44:48.836 11247-11247/stickyapps.zabanamooz W/System.err:     at libcore.io.Linux.open(Native Method)

...

私はこのコードを使用しています:

        File file1 = new File(context.getAssets() + "/wordsdb.ser");
        File file2 = new File(context.getFilesDir() + "/wordsdb.ser");

        try {
            copy(file1,file2);
        } catch (IOException e) {
            e.printStackTrace();
        }

コピー方法:

public void copy(File src, File dst) throws IOException {
    try (InputStream in = new FileInputStream(src)) {
        try (OutputStream out = new FileOutputStream(dst)) {
            // Transfer bytes from in to out
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
        }
    }
}

私はアプリと...まだ運を再インストールし、プロジェクトを再構築し、アンドロイドスタジオを再起動してみました。

ディーパック・シン:

アセット・マネージャーを使用してみてください

AssetManager assetManager = getAssets();
String[] files = assetManager.list("");

これはcertianファイルを開くには:

InputStream input = assetManager.open(assetName);

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=410511&siteId=1
おすすめ