Java 如何将api级别写入外部存储器>;android中的19?
我想从internet url下载一张图片,并将其保存在外部存储器中。之前,我尝试创建一个名为MyApp的文件夹,但似乎失败了,因为控制台上没有显示日志。这是我的代码:Java 如何将api级别写入外部存储器>;android中的19?,java,android,Java,Android,我想从internet url下载一张图片,并将其保存在外部存储器中。之前,我尝试创建一个名为MyApp的文件夹,但似乎失败了,因为控制台上没有显示日志。这是我的代码: String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/MyApp/"; File fileFolder = new File(path); try { // Make sure the
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/MyApp/";
File fileFolder = new File(path);
try {
// Make sure the Pictures directory exists.
if (!fileFolder.exists()) {
if (!fileFolder.mkdirs()) {
Log.i("myApp", "failed to create directory");
}else{
Log.i("myApp", "the dir has been created");
}
}
newFoto = new File(path, urls[1]);
URL url = new URL(urls[0]);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
is = connection.getInputStream();
OutputStream os = new FileOutputStream(newFoto);
byte[] buffer = new byte[is.available()];
int bytesRead = 0;
while ((bytesRead = is.read(buffer, 0, buffer.length)) >= 0) {
os.write(buffer, 0, bytesRead);
}
Log.i("myApp", "writing at"+newFoto.getPath());
is.close();
os.close();
return true;
} catch (IOException e) {
Log.i("myApp", "Download has failed: " + e);
return false;
}
首先向清单中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
这将解决您的问题。检查您是否已声明这些权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
到
如果您仍然看不到任何日志,请将筛选器从“仅显示选定的应用程序”切换到“无筛选器”
之后,请张贴日志,否则很难理解出了什么问题
确保检查有关如何在磁盘中存储文件的
我还建议使用库来加载图像,比如或嘿,你希望显示什么日志行?还是没有日志显示?您是否将日志级别更改为Info?未显示目录已创建或创建目录失败之类的日志。但是我已经用fileManager检查了文件夹,目录已经创建,但是图片看起来像一个坏文件。我不知道我的输出流是否做错了。在低于19的API中,此代码运行良好。关于目录的日志,您应该删除目录并再次运行以查看日志,因为如果创建了目录,那么代码肯定不会运行到if案例中!嗯,你能完整地显示你的函数/类吗?这样很容易检查谢谢,现在目录已经创建了,但是下载图片时出现了一些问题,因为文件夹中的文件看起来像坏了的,你能建议我如何从url下载此api级别的文件吗?我想我的问题是outputstream,没有正确地写入字节,但我不知道-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
Log.i("myApp", "Download has failed: " + e);
Log.e("myApp", "Download has failed: " + e.getMessage(), e);