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