如何在Android中保存文件?我有以下代码:
final File file = new File(cont.getExternalFilesDir(null), filename);
if (!file.exists()) {
file.createNewFile();
}
我得到
03-21 11:31:29.903: W/System.err(31668): java.io.IOException: open failed: ENOENT (No such file or directory)
03-21 11:31:29.903: W/System.err(31668): at java.io.File.createNewFile(File.java:948)
我保存文件的完整代码如下:
final File file = new File(context.getExternalFilesDir(null), filename);
if (!file.exists()) {
// file.mkdirs();
file.createNewFile();
}
final OutputStream output = new FileOutputStream(file);
try {
try {
final byte[] buffer = new byte[1024];
int read;
while ((read = input.read(buffer)) != -1)
output.write(buffer, 0, read);
output.flush();
} finally {
output.close();
}
Log.i("save_file", "save to disk is ok");
} catch (Exception e) {
e.printStackTrace();
}
我也有权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
有人可以指出我做错了吗,谢谢
编辑:问题是我想要保存的文件的名称,所以它不应该包含受限的字符,我的格式是这样的:"xxx/xxx.jpg"
因此'/'不是文件名的有效字符。谢谢
最好使用Environment.getExternalStorageDirectory()而不是context.getExternalFilesDir(null),即使看起来相同。
这是我的代码:
String extr = Environment.getExternalStorageDirectory().toString();
File mFolder = new File(extr + "/MainFolder_Photo");
if (!mFolder.exists()) {
mFolder.mkdir();
}
String strF = mFolder.getAbsolutePath();
mSubFolder = new File(strF + "/Pictures");
if (!mSubFolder.exists()) {
mSubFolder.mkdir();
}
// check file are there or not;// if present delete
try {
File yourDir = new File(mSubFolder.getAbsoluteFile().toString());
for (File f : yourDir.listFiles()) {
if (f.length()>0){
f.delete();
}
}
} catch (Exception e) {
// TODO: handle exception
}
// file name
String s = "Puzzle_Photo.png";
File f = new File(mSubFolder.getAbsolutePath(), s);
strMyImagePath = f.getAbsolutePath();
OutputStream output;
try {
output = new FileOutputStream(f);
URL url = new URL("file://" + filePath);// your data
InputStream input = url.openStream();
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
output.close();
input.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句