これは私のコードです。
while ((count = in.read(data, 0, 16384)) != -1) // while there is still data from link to be read
{
download.removeMouseListener(m);
/*speed.setText(String.valueOf(count));*/
if (time >= time2 ){ // every second , set kb/s
long initTimeInSeconds = initTime/1000000000;
long currentTimeInSeconds = time/1000000000;
speed.setText(String.valueOf((fout.getChannel().size() / 1024) / (currentTimeInSeconds-initTimeInSeconds) + "KB/s")); // set kb/s
time2 = System.nanoTime() + 1000000000;
}
progress.setValue((int) fout.getChannel().size());//update progress bar
fout.write(data, 0, count); // write the data to the file
time = System.nanoTime();
}
基本的に、ダウンロード コードは次のとおりです。
while ((count = in.read(data, 0, 16384)) != -1) // while there is still data from link to be read
{
fout.write(data, 0, count); // write the data to the file
time = System.nanoTime();
}
どこ
byte data[] = new byte[16384];
BufferedInputStream in = null;
in = new BufferedInputStream(url.openStream());
int count = 0;
どういうわけか、このコードは特定のファイル、たとえばこのファイルをダウンロードしていません。 http://nmap.org/dist/nmap-6.40-setup.exe
while ループは開始時に停止し、2 回読み取り、完全に停止します。
誰でも理由を説明できますか?