簡體   English   中英

Android:無法復制資產文件夾中子目錄的子目錄

[英]Android: Cant copy sub directory of sub directory in assets folder

我正在嘗試將存儲在應用程序資產文件夾中的一些預加載內容復制到sdk卡。 問題是我似乎無法掌握要復制目錄的文件路徑。 我想遍歷存儲在項目中我的資產文件夾中的preloadedcontent文件夾,然后將其中的每個文件夾復制到sdk卡中。 我可以遍歷預加載的內容文件名確定,但是當我嘗試跨以下目錄復制目錄時,出現filenotfound異常:

- Assets/
-- preloadedcontent/
--- 112/
--- 113/
--- 114/

private void copyAssets() {
            AssetManager assetManager = getAssets();
            String[] files = null;
            try {
                files = assetManager.list("preloadedcontent");
            } catch (IOException e) {
                Log.e("tag", "Failed to get asset file list.", e);
            }
            for(String filename : files) {
                Log.d("file: ",filename);
                InputStream in = null;
                OutputStream out = null;
                try {
                  in = assetManager.open("preloadedcontent/" + filename + "/");

                  File outFile = new File(_DirectoryName, filename);
                  out = new FileOutputStream(outFile);
                  //copyFile(in, out);
                  File f = stream2file(in,filename);
                  copyDirectory(f,outFile);
                  in.close();
                  in = null;
                  out.flush();
                  out.close();
                  out = null;
                } catch(IOException e) {
                    Log.e("tag", "Failed to copy asset file: " + filename, e);
                }       
            }

        }

此行上的錯誤是assetManager.open(“ preloadedcontent /” +文件名+“ /”);

這是因為"preloadedcontent/" + filename + "/"不是有效的文件名(由於斜杠的原因)。 AssetManager#open()需要AssetManager#open()一個文件的名稱。

if(id.equals(“ AABA / ABO”)){

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

            try {

                files = assetManager.list("aaba");
                List<String> it = Arrays.asList(files);

                for (String string : it) {

                    InputStream ims = assetManager.open("aaba/" + string);  

                    // create drawable from stream                      
                    Drawable d = Drawable.createFromStream(ims, null);                  
                    drawable.add(d);

                }               


            } catch (IOException e) {                   
                e.printStackTrace();

            }   

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM