我正在尝试从服务器获取文件并将其存储在我的应用程序中的SD卡中。我收到一个无效的参数错误。
请参阅下面附带的代码和logcat。请帮助
此外,有没有更好的方法来做到这一点。我经常也会遇到套接字超时异常
File file = new File(getExternalFilesDir(null),values);
URL url = new URL("http://abcd.com/edmuploads/"+values);
URLConnection urlConnection = url.openConnection();
urlConnection.setReadTimeout(7000);
urlConnection.setConnectTimeout(7000);
InputStream inputStream = urlConnection.getInputStream();
BufferedInputStream bufferinstream = new BufferedInputStream(inputStream);
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
while((current = bufferinstream.read()) != -1){
baf.append((byte) current);
}
//This is where I am getting an invalid argument error. The line number 560 as mentioned in the logs below
FileOutputStream fos = new FileOutputStream(file, false);
fos.write(baf.toByteArray());
fos.flush();
fos.close();
记录猫
08-06 10:15:37.089: W/System.err(11448): java.io.FileNotFoundException: /mnt/sdcard/Android/data/com.veleztechnologies.eldicciomalopremium/files/1375701341.3gp
08-06 10:15:37.089: W/System.err(11448): (Invalid argument)
08-06 10:15:37.099: W/System.err(11448): at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
08-06 10:15:37.099: W/System.err(11448): at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:232)
08-06 10:15:37.099: W/System.err(11448): at java.io.FileOutputStream.<init>(FileOutputStream.java:94)
08-06 10:15:37.099: W/System.err(11448): at com.veleztechnologies.eldicciomalopremium.WordListActivity.getFileList(WordListActivity.java:560)
答案 0 :(得分:0)
似乎您无法写入在这种情况下不存在的文件。相反,使用:
if(!file.exists()) {
file.createNewFile();
}
编辑:至于下载文件的更好方法,这就是我使用的方法:
URL website = new URL("http://url");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("information.html");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
对于FileOutputStream,您可能需要使用绝对路径。
答案 1 :(得分:0)
将此权限添加到您的清单文件中
答案 2 :(得分:0)
在清单文件中添加WRITE_EXTERNAL_STORAGE PERMISSION
答案 3 :(得分:0)
我终于找到了解决方法。是文件名中的特殊字符问题。文件名末尾有一个换行符,当首先创建文件时,该换行符被错误地附加。删除修复此问题。谢谢大家。