gpt4 book ai didi

java - 从 DiskLruCache 访问 OutputStream 时出现 NullPointerException

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:03 26 4
gpt4 key购买 nike

我正在使用DiskLruCache缓存图像的 url。我使用 AsyncTask 下载图像像这样:

new AsyncTask<String, String, String>() {

String path = null;

@Override
protected String doInBackground(String... params) {

// Get the assets from DiskLruCache
try {
if (url != null)
path = assetManager.getAssetFilePath(url);
} catch (IOException e) {
callback.downloadFailed();
}

return path;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (path != null)
callback.assetDownloaded(path);
else
callback.downloadFailed();
}

}.execute();

AssetManager是一个调用方法 getAssetFilePath(...) 的自定义帮助器类。异常发生在这段代码中:

    DiskLruCache.Snapshot snapshot = mDiskCache.get(key);
if (snapshot == null) {

DiskLruCache.Editor editor = mDiskCache.edit(key);

InputStream is = downloadFile(url);

if (is == null) return null;

// EXCEPTION OCCURS HERE
OutputStream os = editor.newOutputStream(0);

byte[] buffer = new byte[1024 * 10];
int len;
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}

is.close();
os.close();

editor.commit();
}

具体来说,这里的这一行会导致异常:

OutputStream os = editor.newOutputStream(0);

我似乎无法在我的任何测试设备上重复此问题,但其他用户也会出现此问题。

此问题的原因是什么?我该如何解决它?

logcat 告诉我:

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.OutputStream com.jakewharton.disklrucache.DiskLruCache$Editor.newOutputStream(int)' on a null object reference

有更好的方法吗?

这也是初始化DiskLruCache的好方法吗? ?如果不是,那么什么是良好的可扩展初始化?寻找最佳实践和实现。

public CacheManager() {

BASE_PATH = Environment.getExternalStorageDirectory().getPath() + "/exampleapp";

try {
mDiskCache = DiskLruCache.open(new File(BASE_PATH), VERSION, 1, CACHE_SIZE);
} catch (IOException e) {
Log.i(TAG, "Asset Manager IOException");
e.printStackTrace();
}

}

最佳答案

可能

    DiskLruCache.Editor editor = mDiskCache.edit(key);

已经为空 - 但您不检查它。由于 mDiskCache.get(key) 已经返回 null,因此检查似乎合理?

关于java - 从 DiskLruCache 访问 OutputStream 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com