Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件保存在android设备的内部存储器中_Android - Fatal编程技术网

将文件保存在android设备的内部存储器中

将文件保存在android设备的内部存储器中,android,Android,我正在尝试制作一个在sd卡上保存临时文件的应用程序 如果用户没有sd卡,我希望应用程序将文件保存在内部存储器中 对不起,我的英语不好。您可以使用上下文的getExternalCacheDir()方法获取文件引用,将文件存储在SD卡上。当然,您必须像往常一样进行常规检查,以确保外部存储已装入并可写,但这可能是存储该类型临时文件的最佳位置。您可能需要做的一件事是设置缓存目录中可以使用的最大空间量,然后,在需要写入新临时文件时,如果该文件超过最大空间,则开始删除临时文件,从最旧的开始,直到有足够的空间

我正在尝试制作一个在sd卡上保存临时文件的应用程序

如果用户没有sd卡,我希望应用程序将文件保存在内部存储器中


对不起,我的英语不好。

您可以使用上下文的getExternalCacheDir()方法获取文件引用,将文件存储在SD卡上。当然,您必须像往常一样进行常规检查,以确保外部存储已装入并可写,但这可能是存储该类型临时文件的最佳位置。您可能需要做的一件事是设置缓存目录中可以使用的最大空间量,然后,在需要写入新临时文件时,如果该文件超过最大空间,则开始删除临时文件,从最旧的开始,直到有足够的空间。 或者,类似的方法也可以:

 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File externalRoot = Environment.getExternalStorageDirectory();
File tempDir = new File(externalRoot, ".myAppTemp");
 }

我敢肯定,在“.”前面加上前缀会使文件夹隐藏起来。

这是我用来缓存SD卡或内部存储器的,但要小心。您必须定期清除缓存,尤其是内部存储上的缓存

private static boolean sIsDiskCacheAvailable = false;
private static File sRootDir = null;

public static void initializeCacheDir(Context context){
    Context appContext = context.getApplicationContext();

    File rootDir = null;

    if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
        // SD card is mounted, use it for the cache
        rootDir = appContext.getExternalCacheDir();
    } else {
        // SD card is unavailable, fall back to internal cache
        rootDir = appContext.getCacheDir();

        if(rootDir == null){
            sIsDiskCacheAvailable = false;
            return;
        }
    }

    sRootDir = rootDir;

    // If the app doesn't yet have a cache dir, create it
    if(sRootDir.mkdirs()){
        // Create the '.nomedia' file, to prevent the mediastore from scanning your temp files
        File nomedia = new File(sRootDir.getAbsolutePath(), ".nomedia");
        try{
            nomedia.createNewFile();
        } catch(IOException e){
            Log.e(ImageCache.class.getSimpleName(), "Failed creating .nomedia file!", e);
        }
    }

    sIsDiskCacheAvailable = sRootDir.exists();

    if(!sIsDiskCacheAvailable){
        Log.w(ImageCache.class.getSimpleName(), "Failed creating disk cache directory " + sRootDir.getAbsolutePath());
    } else {
        Log.d(ImageCache.class.getSimpleName(), "Caching enabled in: " + sRootDir.getAbsolutePath());

        // The cache dir is created, you can use it to store files
    }
}