자바 가 URL 에 따라 파일 을 가 져 오 는 바 이 너 리

3948 단어 javaWeb자바
URL 을 가 져 올 파일 이 필요 하고 다운로드 하고 싶 지 않 을 때 이 도구 클래스 를 사용 할 수 있 습 니 다.편리 하고 빠 르 며 HttpURLConnection 을 사용 하여 URL 에 따라 파일 흐름 을 가 져 온 다음 에 가 져 온 바 이 너 리 흐름 을 데이터베이스 에 저장 하면 됩 니 다. 그때 꺼 내 서 직접 다운로드 하고 열 어도 OK 입 니 다.
상위 코드:
package jd_test;

import java.io.BufferedReader; 
import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL;
import java.util.Base64;
import java.util.Random;
import java.util.stream.Stream;

public class UrlResource { 
	 private static Base64.Decoder decoder = Base64.getDecoder();
	 private static Base64.Encoder encoder = Base64.getEncoder();
	public static void main(String[] args){ 
		try { 
			//System.out.println(UrlResource.getUrlDetail("http://www.baidu.com",true)); 
			//saveUrlFile("       .gif", "D:\\1.gif");
			
			System.out.println(encoder.encode(getUrlFileData("http://www.       ")));
		  // System.out.println(getUrlFileData("http://www.       "));
		   // saveUrlFile("http://www.       ", "D:\\1.pdf");
		  //  System.out.println(UrlResource.getUrlDetail("http://www.       ",true)); 
		
			//         
			File file = new File("D:\\1.pdf");
			//       
			FileOutputStream fos = new FileOutputStream(file);
			
			//fos.write(decoder.decode(encoder.encode(getUrlFileData("http://www.       "))));
			//fos.write(encoder.encode(getUrlFileData("http://www.       ")));
			fos.write(getUrlFileData("http://www.       "));
			
			// FileOutputStream  write        
			//fos.write(getUrlFileData("http://www.       "));
			System.out.println("    ");
			//    IO    ,    
			fos.close();
		} catch (Exception e) {
			e.printStackTrace(); 
		} 
	} 
	
	//      ,   fileDes ,fileDes         
	public static void saveUrlFile(String fileUrl,String fileDes) throws Exception 
	{ 
		File toFile = new File(fileDes); 
		if (toFile.exists()) 
		{ 
		// throw new Exception("file exist"); 
		return; 
		} 
		toFile.createNewFile(); 
		FileOutputStream outImgStream = new FileOutputStream(toFile);
		System.out.println(getUrlFileData(fileUrl));
		outImgStream.write(getUrlFileData(fileUrl)); 
		
		outImgStream.close(); 
	} 
	
	public static byte[] getBase64UrlFileData(String fileUrl)
	{
		try {
			
			//  PDF      base64,   get       UrlEncode,  sdk  。 
			return encoder.encode(getUrlFileData(new String(decoder.decode(fileUrl))));
		} catch (Exception e) {
			e.printStackTrace();
		}
			return null;
		}
	//         byte   
	public static byte[] getUrlFileData(String fileUrl) throws Exception 
	{ 
		URL url = new URL(fileUrl); 
		HttpURLConnection httpConn = (HttpURLConnection) url.openConnection(); 
		httpConn.connect(); 
		InputStream cin = httpConn.getInputStream(); 
		ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
		byte[] buffer = new byte[1024]; 
		int len = 0; 
		while ((len = cin.read(buffer)) != -1) { 
		outStream.write(buffer, 0, len); 
		} 
		cin.close(); 
		byte[] fileData = outStream.toByteArray(); 
		outStream.close(); 
		return fileData; 
	} 
	
	//           ,wichSep       
	public static String getUrlDetail(String urlStr,boolean withSep) throws Exception 
	{ 
	URL url = new URL(urlStr); 
	HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); 
	httpConn.connect(); 
	InputStream cin = httpConn.getInputStream(); 
	BufferedReader reader = new BufferedReader(new InputStreamReader(cin,"UTF-8")); 
	StringBuffer sb = new StringBuffer(); 
	String rl = null; 
	while((rl = reader.readLine()) != null) 
	{ 
		if (withSep) 
		{ 
			sb.append(rl).append(System.getProperty("line.separator")); 
		}
		//            ,      byte    base64  ,     ,     img src      
		else 
		{ 
			sb.append(rl); 
		} 
	} 
		return sb.toString(); 
	} 



}

좋은 웹페이지 즐겨찾기