2017-01-03 11 views
-1

複数の.epubファイルがアセットにあります。すべての.epubファイルをlistFileにします。私の古いコードでは、私はこの複数のファイルを読み込むためにファイル内にアセットのパスを取得する

File myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Files"); 

File listFile[] = myFile.listFiles(); 
if (listFile != null && listFile.length > 0) { 
    for (int i = 0; i < listFile.length; i++) { 

     if (listFile[i].getName().endsWith(".epub")) { 

      myNewBookModels = new NewBookModels(); 
      Log.i(TAG, "getEpubFilesFromFileManager: " + ".." + listFile[i].getName()); 

      myNewBookModels.setBookName(listFile[i].getName().toString()); 
      myNewBookModels.setBookPath(listFile[i].getPath().toString()); 
      myNewBookModels.setBitmap(bookLoaded(listFile[i].getName().toString())); 
      arrayList.add(myNewBookModels); 
     } 
    } 
} 

のように、ファイルを取得するための.epub、外部ストレージのファイルパスを使用しますが、私は、資産フォルダからの.epubファイルことをしたいです。これどうやってするの?

私も

1というの.epubファイルからこのフィールドをしたい)名前

2)パス

3)ビットマップ(表紙イメージ)

それは私のために必須です。これは、Fileでのみ可能ですが、資産が必要です.epubファイルFile

答えて

0

ファイルがアセットフォルダにある場合は、常に固定パスになります。文字列にハードコーディングされたパスを与えることができます。

+0

を、あなたは詳細に説明してくださいすることができます。 –

+0

私はあなたのファイルが外部記憶装置にあったときに、それらが可変パスを持つかもしれないことを意味しました。その場合、実行時にパスを取得する必要があります。しかし今、あなたのファイルがアンドロイドのアセットフォルダにあるとき、それは常にすべてのデバイスで修正されます。したがって、実行時にパスを取得する必要はありません。あなたはハードコーディングされたパスを与えることができます。 &典型的なAndroidスタジオプロジェクトでは、メイン/ソースセット(プロジェクトルートのapp/src/main/off)を持つapp/moduleがあるので、あなたのプライマリアセットはapp/src/main/assets/。名前の場合:String [] listOfFileName = getContext()。getAssets()。list( "your/path"); – Charu

+0

String [] listOfFileName = getContext()。getAssets()。list( "あなたの/ path/inside/asset"); – Charu

1

あなたはこのパスを使用して資産フォルダにアクセスすることができます - "ファイル:/// android_asset /ファイル"

OR

//Directory or File name 
dirForm = "files"; 
private void listFiles(String dirFrom) { 
     Resources res = getResources(); //if you are in an activity 
     AssetManager am = res.getAssets(); 
     String fileList[] = am.list(dirFrom); 

      if (fileList != null) 
      { 
       for (int i = 0;i<fileList.length;i++) 
       { 
        File file = new File(fileList[i]); 
        if ((file.getName()).endsWith(".epub")) { 

         Log.i(TAG, "getEpubFilesFromFileManager: " + ".." + file.getName() +"Path"+ file.getPath()); 
        } 
       } 
      } 
    } 
+0

fileList []は文字列配列 –

+0

を直接実行するので、この 'fileList [i] .getName()'は 'getName()'を取得しません。 i] .endsWith( ".epub")をスキップし、.getName()をスキップします。 fileList配列にファイル名が含まれているためです。 –

+0

しかし、私はその名前が欲しい –

関連する問題