Can';不要在我的设备android上的sd卡上写字
我试图从服务器下载图像并将其保存在sd卡上,但失败了 当我在emulator或其他设备上尝试时,它工作正常,但我的设备不正常。我的设备是galaxy mini gt-s5570 这是我的代码:Can';不要在我的设备android上的sd卡上写字,android,file,storage,external,Android,File,Storage,External,我试图从服务器下载图像并将其保存在sd卡上,但失败了 当我在emulator或其他设备上尝试时,它工作正常,但我的设备不正常。我的设备是galaxy mini gt-s5570 这是我的代码: public String downloadImage(String imageUrl, String id, String folder) { String path = Environment.getExternalStorageDirectory().getAbsolutePath(
public String downloadImage(String imageUrl, String id, String folder) {
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/FBLogoQuiz/" + folder + "/";
Log.d("path", path);
File FBLogoQuiz = new File(path);
FBLogoQuiz.mkdirs();
FBLogoQuiz.mkdir();
String data = "";
try {
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
// create a File object for the parent directory
File FBLogoQuizDirectory = new File(path, id + ".png");
// have the object build the directory structure, if needed.
FBLogoQuizDirectory.createNewFile();
data = String.valueOf(String.format(path + id + ".png"));
FileOutputStream stream = new FileOutputStream(data);
ByteArrayOutputStream outstream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.PNG, 85, outstream);
byte[] byteArray = outstream.toByteArray();
stream.write(byteArray);
stream.close();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
Manifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
createNewFile()
在创建文件时不创建新目录。您需要执行以下操作:
FBLogoQuizDirectory().getParentFile().mkdirs();
在创建文件之前。这听起来很明显,但是
/fblogoquick/
和您要传递的字符串的文件夹是否存在?它将第一次创建。。我想它会自动检查这个目录是否存在,如果不存在,它会创建,如果不存在,它不会创建目录。请看我的答案。
FBLogoQuizDirectory().getParentFile().mkdirs();