我正在尝试制作一个从网站下载大量图像的java程序。但是,一旦我上课,它就会立即退出,我无法弄明白为什么。这是我的代码:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.HashMap;
public class Main {
static HashMap<Integer, String> hmap = new HashMap<Integer, String>();
public static void main(String[] args) throws IOException {
for(int i = 1; i > 151; i++) {
for(int i1 = 1; i1 > 151; i1++) {
if(i == i1) {
continue;
}
String imageUrl1 = "http://images.alexonsager.net/pokemon/fused/" + i + "/" + i + "." + i1 + ".png";
String destinationFile1 = hmap.get(i) + " and " + hmap.get(i1);
saveImage(imageUrl1, destinationFile1);
System.out.println("Downloaded " + destinationFile1);
}
}
}
public static void saveImage(String imageUrl, String destinationFile) throws IOException {
URL url = new URL(imageUrl);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destinationFile);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
}
public static void createHash() {
//hmap.put(int, string) times 151
}
}
我想要它做的是下载,比如,i = 1和i1 = 2,然后下载i = 1和i1 = 3,依此类推,直到两者都达到151(它们都不能相等) 。总而言之,这将下载22650个文件,总共约为27.6MB。那就是说,这是java设置本身的内存问题(我有32GB的RAM,所以我用完了不是一个选项),还是代码有问题?
如果有人可以帮助我,我将不胜感激。
谢谢!
答案 0 :(得分:2)
我永远不会超过151,所以你永远不会进入你的循环。
for (int i = 1 ; i < 151 ; i++)