java URLから画像をダウンロードする方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic
記事: 656
登録日時: 13年前
住所: 宮崎県
連絡を取る:

java URLから画像をダウンロードする方法

#1

投稿記事 by dic » 4年前

javaですいません、つまづいたので質問させてください。

今、指定した画像のURLからダウンロードして、ファイルに保存する処理を
行いたいのですが、取得するファイルのサイズがゼロで、うまく画像をゲットできません。

どこがまずいでしょうか?

以下がコードです。

コード:

package test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;



public class HelloWorld {
	public static void main(String[] argv) {
		System.out.println("Hello World");
		SayHello();
		step1();
		System.out.println("step1 END");
	}
	
	public static void SayHello()
	{
		System.out.println("Hello");
	}
	
	public static void step1()
	{
		URL url = null;
		HttpURLConnection urlConnection = null;
		
		try {
			url = new URL("https://anime-pictures.net/pictures/get_image/430567-800x800-shingeki+no+kyojin-production+i.g-mikasa+ackerman-wail-single-short+hair.jpg");
			
			urlConnection = (HttpURLConnection)url.openConnection();
			//	trueならリダイレクトを認める
			urlConnection.setInstanceFollowRedirects(true);
		} catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException  e) {
            e.printStackTrace();
        }
		
		InputStream in = null;
		
		try {
			in = urlConnection.getInputStream();
		}
		catch( IOException e) {
			e.printStackTrace();
		}
		
		byte[] buf = new byte[4096];
		int readSize;
		int total = 0;
		try {
			
			FileOutputStream fos = new FileOutputStream("C:\\download\\test.jpg");
			while( ( (readSize = in.read(buf) ) == -1 ) )
			{
				total = total + readSize;
				fos.write(buf,0,readSize);
			}
			fos.flush();
			fos.close();
			in.close();
		}
		catch( FileNotFoundException e ) {
			System.out.println("ファイルエラー" );
		}catch(IOException e ) {
			e.printStackTrace();
		}

		System.out.println("Size:" + total );
	}
}


YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: java URLから画像をダウンロードする方法

#2

投稿記事 by YuO » 4年前

in.Readの戻り値が-1と等しい間ループ、になっています。
ループはin.Readの戻り値が-1ではない間、とする必要があります。

dic
記事: 656
登録日時: 13年前
住所: 宮崎県
連絡を取る:

Re: java URLから画像をダウンロードする方法

#3

投稿記事 by dic » 4年前

>>YuO様

そこだったんですね。色々他のところをいじってました。orz
== - 1 を != -1 に変更したところ
無事にダウンロードできました。ありがとうございました。

返信

“C言語何でも質問掲示板” へ戻る