例は単純な画像です。
私は非常に多くのことを試しましたが、非常に理にかなっていますが、うまくいきません。
これまでに行ったことは、25 枚の写真を取得して追加できることです。
/sdcard/アプリ名/sub/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();
}
}
これは私のディレクトリがどのように見えるかのイメージです