奇趣5分彩

Java 若何取得url地点文件流

 更新时辰:2022年07月12日 11:20:02   作者:shiyue41  
这篇文章首要先容了Java 若何取得url地点文件流,具备很奇趣5分彩的参考代价,但愿对大师奇趣5分彩所赞助。若奇趣5分彩毛病或未斟酌完全的处所,望不吝见教

取得url地点文件流

/**
 * 按照url下载文件流
 * @param urlStr
 * @return
 */
public static InputStream getInputStreamFromUrl(String urlStr) {
    InputStream inputStream=null;
    try {
        //url解码
        URL url = new URL(java.net.URLDecoder.decode(urlStr, "UTF-8"));
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //设置超时辰为3秒
        conn.setConnectTimeout(3 * 1000);
        //避免屏障法式抓取而前往403毛病
        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //取得输入流
        inputStream = conn.getInputStream();
    } catch (IOException e) {
        
    }
    return inputStream;
}

按照url取得文件的二进制

当须要取得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");
			//奇趣5分彩立输入字节流
			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体例写入字节数奇趣5分彩
			//fos.write(getUrlFileData("http://www.你的文档的途径"));
			System.out.println("写入胜利");
			//为了节流IO流的开消,须要封闭
			fos.close();
		} catch (Exception e) {
			e.printStackTrace(); 
		} 
	} 
	
	//取得收集文件,转存到fileDes奇趣5分彩,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")); 
		}
		//若是是要间接显现到页面奇趣5分彩,能够讲取得的byte数据停止base64加密,加上文件头,间接设置到img的src外面就能够了
		else 
		{ 
			sb.append(rl); 
		} 
	} 
		return sb.toString(); 
	} 
}

以上为小我经历,但愿能给大师一个参考,也但愿大师多多撑持剧本之奇趣5分彩。

相干文章

最新批评