java - 如何在Android中创建一个目录,并将图片保存到其中

标签 java android bitmap directory fileoutputstream

这是我编写的一个函数,它试图:

  1. 用用户名创建一个文件夹
  2. 在其中保存一个 .jpg 文件夹

文件夹创建工作正常,但是当我尝试保存图片时,它们都以正确的名称保存,但是它们没有保存在预期的文件夹中。换句话说,我没有一个包含一堆文件夹的文件夹,每个文件夹都包含一张图片,而是一个文件夹包含一堆空文件夹,以及一堆图片都在它们的文件夹之外(如果需要我可以澄清)。

这是我的代码:

 public void addToDir(List<Contact> list){

        for(int i = 0; i < list.size(); i++){

            String nameOfFolder = list.get(i).getName();
            Bitmap currentBitmap = list.get(i).getBusiness_card();

            String conName = Environment.getExternalStorageDirectory() + File.separator + "MyApp" + File.separator +
                    "Connected Accounts" + File.separator + nameOfFolder;

            File conDir = new File(conName);

            if (!conDir.mkdirs()) {
                if (conDir.exists()) {
                } else {
                    return;
                }
            }

            try {
                FileOutputStream fos = new FileOutputStream(conName + ".jpg", true);
                currentBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);

                fos.flush();
                fos.close();
            } catch (Exception e) {
                Log.e("MyLog", e.toString());
            }
        }
    }

我怀疑问题出在 FileOutputStream 路径上,但我不确定如何设置它以便将其设置为我刚刚创建的文件夹。

非常感谢

最佳答案

This is how to define mFileTemp

String state = Environment.getExternalStorageState();
File mFileTemp;
if (Environment.MEDIA_MOUNTED.equals(state)) {
//this is like that 
//directory :  any folder name/you can add inner folders like that/your photo name122412414124.jpg
mFileTemp = new File(Environment.getExternalStorageDirectory()+File.separator+"any folder name"+File.separator+"you can add inner folders like that"
        , "your photo name"+System.currentTimeMillis()+".jpg");
mFileTemp.getParentFile().mkdirs();
}
else {
mFileTemp = new File(getFilesDir()+"any folder name"+
        File.separator+"myphotos")+File.separator+"profilephotos", "your photo name"+System.currentTimeMillis()+".jpg");
mFileTemp.getParentFile().mkdirs();

This is how i save any image

try {
        InputStream inputStream = getContentResolver().openInputStream(data.getData());
        FileOutputStream fileOutputStream = new FileOutputStream(mFileTemp);
        copyStream(inputStream, fileOutputStream);
        fileOutputStream.close();
        inputStream.close();
    } catch (Exception e) {
        Log.e("error save", "Error while creating temp image", e);
    }

And copyStream method

public static void copyStream(InputStream input, OutputStream output) throws IOException {
    byte[] buffer = new byte[1024];
    int bytesRead;
    while ((bytesRead = input.read(buffer)) != -1) {
        output.write(buffer, 0, bytesRead);
    }
}

关于java - 如何在Android中创建一个目录,并将图片保存到其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916703/

相关文章:

java - 指示输入字符串的数据类型?

java - 关于 Android 应用程序中的当前月份和年份

android - 将 opus 音频 rtp 流式传输到 android 设备

android - 给定 map 叠加层上的一组点绘制空多边形 (Android 2.1)

android - 如何在 map 上显示之前缩放位图?

Java:处理时间表达式

java.lang.RuntimeException : Parcelable encountered IOException writing serializable object in Android passing ArrayList object 错误

android - 无法将位图转换为 Uri

c++ - MFC - 如何绘制彩色位图到对话框DC

java - 将具有类型参数的类传递/返回给函数