如何在android的内部存储器中的默认图像路径中创建文件夹?

时间:2013-12-13 06:06:21

标签: android

在我们的应用程序中,我们将图像存储到内部存储器中。在获取数据时,我们通过内部存储器的图像路径获取图像。在绝对路径的帮助下,我能够获取路径,例如" ../ image / file.png"。但我想要路径文件夹如" ../ images / filefolder / file.png"。如果我尝试打开另一个图像,我的要求是删除所有图像。所以我试图将图像存储到一个文件夹中。通过它的引用,我可以删除文件夹的内容。 请帮忙。

先谢谢了, AA

3 个答案:

答案 0 :(得分:0)

File file = null;
file = new File(Environment.getExternalStorageDirectory()
                .getAbsolutePath()
                + CommonVariable.YOUR_FOLDER_PATH);
        // have the object build the directory structure, if needed.
        if (!file.exists()) {
            file.mkdirs();
        }

上面的代码是在你的SD卡中创建文件夹。

答案 1 :(得分:0)

使用以下代码将图像保存到内部目录。

private String saveToInternalSorage(Bitmap bitmapImage){
    ContextWrapper cw = new ContextWrapper(getApplicationContext());
     // path to /data/data/yourapp/app_data/imageDir
    File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
    // Create imageDir
    File mypath=new File(directory,"profile.jpg");

    FileOutputStream fos = null;
    try {           

        fos = new FileOutputStream(mypath);

   // Use the compress method on the BitMap object to write image to the OutputStream
        bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return directory.getAbsolutePath();
}

说明:

1.将使用给定名称创建目录。 Javadocs用于告诉它将在何处创建目录。

2.您必须提供要保存的图像名称。

从内存中读取文件。使用以下代码

private void loadImageFromStorage(String path)
{

try {
    File f=new File(path, "profile.jpg");
    Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
        ImageView img=(ImageView)findViewById(R.id.imgPicker);
    img.setImageBitmap(b);
} 
catch (FileNotFoundException e) 
{
    e.printStackTrace();
}}

答案 2 :(得分:0)

private static long getSdCardFreeBlockSize() {
    StatFs statFs = new StatFs(Environment.getExternalStorageDirectory()
            .getAbsolutePath());

    long blockSize = statFs.getBlockSize();
    // long totalSize = statFs.getBlockCount() * blockSize;
    // long availableSize = statFs.getAvailableBlocks() * blockSize;
    long freeSize = statFs.getFreeBlocks() * blockSize;
    return freeSize;
}

public static long getInternalFreeBlockSize() {
    StatFs statFs = new StatFs(Environment.getExternalStorageDirectory()
            .getAbsolutePath());
    long blockSize = statFs.getBlockSize();
    long totalSize = statFs.getBlockCount() * blockSize;
    long availableSize = statFs.getAvailableBlocks() * blockSize;
    long freeSize = statFs.getFreeBlocks() * blockSize;
    return freeSize;
}

public static int checkLargeFreeBlock() {
    long internal = getInternalFreeBlockSize();
    long sdcard = getSdCardFreeBlockSize();
    if (internal == 0 && sdcard == 0) {
        return 2;
    }
    if (internal > sdcard) {
        return 0;
    } else {
        return 1;
    }
}

以上代码检查如果您的内部存储空间更多,则可以在内部存储器中创建文件夹。另外,自动在SD卡中创建文件夹。 以上函数调用:

File file = null;
        long freeblock = getSdCardFreeBlockSize();
        // 0> internal memeory
        // 0=no memory