Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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
Java 如何将api级别写入外部存储器>;android中的19?_Java_Android - Fatal编程技术网

Java 如何将api级别写入外部存储器>;android中的19?

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

我想从internet url下载一张图片,并将其保存在外部存储器中。之前,我尝试创建一个名为MyApp的文件夹,但似乎失败了,因为控制台上没有显示日志。这是我的代码:

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);