通过java的i/o机制进行图片流的存储以及对网络图片的存储
存储内地图片思路:首先把原有的图片以流的方式读取出来,再以流的方式存储到目标文件:
package imgStream; import java.io.*; public class ImgStream { public static void main(String srga[]) { File source = new File("user.jpg"); File desk = new File("G:\\learn\\javademoS\\imgs"); if (!desk.exists()) { desk.mkdir(); } try { FileInputStream inputStream = new FileInputStream(source); FileOutputStream outputStream = new FileOutputStream(new File("G:\\learn\\javademoS\\imgs\\fang.jpg")); int ch = inputStream.read(); while (ch != -1) {//当流结束时返回-1 outputStream.write(ch); ch = inputStream.read(); } inputStream.close(); outputStream.close(); System.out.println("写入流成功"); } catch (FileNotFoundException e) { System.out.println("文件不存在:" + e.getMessage()); } catch (IOException e) { System.out.println("文件读取错误:" + e.getMessage()); } } }
存储网络图片思路:构造一个url,然后请求网络数据,然后再以流的方式写到文件当中:
package imgStream; import java.net.URL; import java.net.URLConnection; import java.io.*; public class ImgStreamS { private static void system() throws Exception { String path = "http://ui.51bi.com/opt/siteimg/images/fanbei0923/Mid_07.jpg"; //构造URL URL url = new URL(path); //打开连接 URLConnection con = url.openConnection(); //请求时间 con.setConnectTimeout(4*1000); //输入流 InputStream is = con.getInputStream(); //1K的数据缓冲 byte[] bs= new byte[1024]; //数据长度 int len; //输出的文件流 File sf = new File("G:\\learn\\javademos\\imgs"); if(!sf.exists()){ sf.mkdirs(); } OutputStream os = new FileOutputStream(sf.getPath()+"\\test.jpg"); //开始读取 while((len = is.read(bs)) != -1){ os.write(bs,0,len); } //关闭所有连接 os.close(); is.close(); } public static void main(String args[]) throws Exception { ImgStreamS imgStream = new ImgStreamS(); system(); } }