如何在Android

时间:2016-04-28 13:49:37

标签: java android bitmap directory fileoutputstream

这是我写的一个试图尝试的函数:

  1. 使用用户名
  2. 创建一个文件夹
  3. 将.jpg保存在其中     夹
  4. 文件夹创建工作正常,但是当我尝试保存图片时,它们都以正确的名称保存,但是它们不会保存在预期的文件夹中。换句话说,我没有一个包含一堆文件夹的文件夹,每个文件夹包含一张图片,我有一个文件夹包含一堆空文件夹,还有一堆图片都在文件夹之外(如果需要我可以澄清)。

    这是我的代码:

     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路径上,但我不知道如何设置它以便将其设置为我刚刚创建的文件夹。

    非常感谢

1 个答案:

答案 0 :(得分:0)

  

这是如何定义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();
  

这是我保存任何图像的方式

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);
    }
  

和copyStream方法

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);
    }
}