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[] 文件实际上是保存文件而不是目录。

注意:如果你真的使用资源文件夹,你也可以使用这样的东西:

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 回答