一個例子是一個簡單的圖像。如何將文件從互聯網寫入SD卡?
我已經嘗試過這麼多的事情,它只是拒絕工作,儘管做了很多的意義。
我所做到目前爲止我能搶的25張,並根據那裏把它們添加到
/SD卡/應用程序名稱/子/ DIR/filename.jpg
他們都出現到DDMS,但他們總是有文件大小爲0.
我猜這可能是因爲我的輸入流?
這是我的功能,處理下載和保存。
public void DownloadPages()
{
for (int fileC = 0; fileC < pageAmount; fileC++)
{
URL url;
String path = "/sdcard/Appname/sub/dir/";
File file = new File(path, fileC + ".jpg");
int size=0;
byte[] buffer=null;
try{
url = new URL("http://images.bluegartr.com/bucket/gallery/56ca6f9f2ef43ab7349c0e6511edb6d6.png");
InputStream in = url.openStream();
size = in.available();
buffer = new byte[size];
in.read(buffer);
in.close();
}catch(Exception e){
}
if (!new File(path).exists())
new File(path).mkdirs();
FileOutputStream out;
try{
out = new FileOutputStream(file);
out.write(buffer);
out.flush();
out.close();
}catch(Exception e){
}
}
}
它只是不斷給我在該目錄中25個文件,但所有的文件大小是零。我不知道爲什麼。這幾乎與我在java程序中使用的代碼相同。
PS ...
如果你要給我一個解決方案...我已經嘗試過這樣的代碼。它不起作用。
try{
url = new URL(urlString);
in = new BufferedInputStream(url.openStream());
fout = new FileOutputStream(filename);
byte data[] = new byte[1024];
int count;
System.out.println("Now downloading File: " + filename.substring(0, filename.lastIndexOf(".")));
while ((count = in.read(data, 0, 1024)) != -1){
fout.write(data, 0, count);
}
}finally{
System.out.println("Download complete.");
if (in != null)
in.close();
if (fout != null)
fout.close();
}
}
這裏是什麼我的目錄樣子
http://oi48.tinypic.com/2cpcprm.jpg
你給'<使用許可權的android:NAME = 「android.permission.WRITE_EXTERNAL_STORAGE」>中的AndroidManifest.xml使用許可權>'? – Lucifer
當然。我還可以解釋如何將附加文件夾添加到我的SD卡中。 – user819511
你應該在catch例外中打印棧跟蹤。也許互聯網上的文件無法訪問。記錄緩衝區的大小 – nandeesh