1

Android アプリケーションのリソース フォルダーに多数の画像があります。ファイルをリソース フォルダーからストレージにコピーし、元のイメージ タイプ (ビットマップ、jpg、png など) を維持したいと考えています。元のファイル名も保持したいと考えています。

私は...の線に沿って何かをしようとしています...

public static void CopyImagesFromResourceToStorage(Context c,int[] resources,String path)
    {
        File dir = new File(path);

        for(int i=0;i<resources.length;i++)
        {
            File file = new File(path+"???Filename???");
            Bitmap bm = BitmapFactory.decodeResource(c.getResources(), resources[i]);

            //Copy Bitmap to the file here...   
        }
}
4

1 に答える 1

0

ファイル名を取得するには、追加のパラメーターである元のパスを使用します。元のディレクトリ内のすべてのファイルをループして、ファイル名を取得できます。ファイル名がある場合は、コメントに記載されているリンクのいずれか...

これが最終的な解決策になります(未テスト):

public static void CopyImagesFromResourceToStorage(Context c,int[] resources,String path, String originalpath)
{
    // Get the directory of your original files
    File dir = new File(originalpath);

    // List all files in that directory
    File[] files = dir.listFiles();
    // Loop through all the files in your original directory
    for(File original: files)
    {
        // Create a filename: <target_directory> + original.getName();
        String filename = path + "\\" + original.getName();
        Bitmap bm = BitmapFactory.decodeResource(c.getResources(), resources[i]);
        try {
           FileOutputStream out = new FileOutputStream(filename);
           bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
        } catch (Exception e) {
           e.printStackTrace();
        }

    }
}

FileOutputStream も閉じて、追加のチェックを行って、File[] ファイルが実際にディレクトリではなくファイルを保持していることを確認してください。

: resouces フォルダーを実際に使用する場合は、次のようなものも使用できます。

Field[] drawables = android.R.drawable.class.getFields();
for (Field f : drawables) {
    try {
        System.out.println("R.drawable." + f.getName());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

リソースをループするには

于 2013-04-02T16:28:00.353 に答える