0

ファイルを内部メモリに保存しようとしていますが、それは私のアプリケーションだけが読み取ることができます。今まで私はこれを試しました。

  String filesave  =     Environment.getExternalStorageDirectory()+""+getFilesDir()+"/.fkfk";
    File f = new File(filesave);
    if (!f.exists()){
        f.mkdir();
    }
File sd = Environment.getExternalStorageDirectory();
    Log.e("files", Environment.getExternalStorageDirectory()+f.getAbsolutePath());
String path  = Environment.getExternalStorageDirectory()+"/.NEWFolders/hdfc0002.jpg";
    File toCopy = new File(path);
    if (toCopy.exists()){
        Log.e("ok","got the path");
        try{
            if (sd.canWrite()) {
                File source= toCopy;
                File destination=f;
                if (source.exists()) {
                    FileChannel src = new FileInputStream(source).getChannel();
                    FileChannel dst = new FileOutputStream(destination).getChannel();
                    if (dst != null && source != null) {
                        dst.transferFrom(src, 0, src.size());
                    }
                    if (src != null) {
                        src.close();
                    }
                    if (dst != null) {
                        dst.close();
                    }
                }else {
                    FileChannel src = new FileInputStream(source).getChannel();
                    FileChannel dst = new FileOutputStream(destination).getChannel();
                    if (dst != null && source != null) {
                        dst.transferFrom(src, 0, src.size());
                    }
                    if (src != null) {
                        src.close();
                    }
                    if (dst != null) {
                        dst.close();
                    }
                }
            }
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }

    }

しかし、このコード スニペットは FileNotFound 例外をスローしています。同じことを提案してください。前もって感謝します

4

1 に答える 1

2

これは混同されています:

Environment.getExternalStorageDirectory()+""+getFilesDir()+"/.fkfk";

Environment.getExternalStorageDirectoryContextのgetFiledDir()メソッドは、2 つの完全に異なる場所を参照します。1 つ目はプライマリの「外部ストレージ」(最近では通常、デバイスの永続的な部分です) で、2 つ目はアプリのプライベート ストレージ領域です。

これらの方法の 1 つだけを使用して、目的に最も適した場所を見つけてください。決定を支援するために、Android ドキュメントのストレージ オプションまたはファイルの保存を参照してください。アプリだけで何かを使用したい場合は、通常、内部ストレージ (getFilesDir()) が必要になります。

場所を選択したら、コードの残りの部分をそれと一致させる必要があります。

于 2016-06-01T12:49:45.603 に答える