0

このコードは、写真付きの 4 つのリンクをダウンロードします。新しい名前で新しい .png ファイルを作成する方法はありますか? 例: image1.png 、 image2.png 、 image3.png が自動的に

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;

public class AfbeeldingDown {


    public static void main(String[] args) throws IOException {
        URL url = new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg");
        URL url1 = new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg");
        URL url2 = new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg");
        URL url3 = new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg");
        InputStream in = url.openStream();

        OutputStream out = new FileOutputStream("image.png");

        int r;

        while ((r = in.read())!= -1) {
            out.write(r);
        }

        in.close();
        out.close();

    }

}
4

3 に答える 3

1

あなたはこのようにすることができます

ArrayList<URL> urlList = new ArrayList();
urlList.add(new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg"));
urlList.add(new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg"));
urlList.add(new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg"));
urlList.add(new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/mazda-2013-tokyo-auto-salon.jpg"));
int i = 1;
for (URL url : urlList) {
  InputStream in = url.openStream();

  OutputStream out = new FileOutputStream("image" + i + ".png");
  i++;
  int r;
  while ((r = in.read()) != -1) {
   out.write(r);
   }
   in.close();
   out.close();
 }

そしてよりシンプルに

ArrayList<String> imageNames = new ArrayList();
imageNames.add("mazda-2013-tokyo-auto-salon.jpg");
imageNames.add("mazda-2013-Volkswagen-CrossBlue-main.jpg");
for ( String imageName : imageNames) {
    URL url = new URL("http://www.autoguide.com/auto-news/wp-content/uploads/2012/12/"+imageName);
    InputStream in = url.openStream();
    OutputStream out = new FileOutputStream(imageName);
    int r;
    while ((r = in.read()) != -1) {
        out.write(r);
    }
    in.close();
    out.close();
}
于 2013-01-21T14:19:30.043 に答える
0

次のように作成するファイル名を引数として受け取るようにコードを更新できます。

 public static void main(String[] args) throws IOException {
        //same code as before
        OutputStream out = new FileOutputStream(arg[0]);

        int r;

        while ((r = in.read())!= -1) {
            out.write(r);
        }

        in.close();
        out.close();
}

その後、あらゆる種類の改良を行うことができます。

  • 入力された名前を検証して、空でないか (この場合はデフォルトのファイル名を使用)、現在のオペレーティング システムでサポートされている有効なファイル名であるかどうかを確認します。
  • ファイル名テンプレート (「image」など) を引数として渡すだけで、最後にインクリメントを追加して、毎回新しいファイルが作成されるようにします (例: 「image1.png」が存在する場合、新しいファイル名「image2.png」になります)。まず、現在のディレクトリにある "[template]" で始まるすべてのファイルを一覧表示する必要があります。
于 2013-01-21T14:18:22.843 に答える
0

単純なクラスでは、これが可能です。

// Lacks checking, not thread safe etc -- left as an exercise
public final class CountingFileGenerator
{
    private final String prefix, suffix;
    private int count = 1;

    public CountingFileGenerator(final String prefix, final String suffix)
    {
        this.prefix = prefix;
        this.suffix = suffix;
    }

    public OutputStream newFile()
        throws IOException
    {
        final String name = String.format("%s%d%s", prefix, count, suffix);
        final OutputStream ret = new FileOutputStream(name);
        count++;
        return ret;
    }
}

使用法:

final CountingFileGenerator generator = new CountingFileGenerator("image", ".png");

final OutputStream o1 = generator.newFile();
final OutputStream o2 = generator.newFile();

などなど

もちろん、返されたストリームを閉じることを忘れないでください。

于 2013-01-21T14:18:46.347 に答える