总结:无论从哪里转,都可通过read先转换为字节数组或者字符数组,然后再使用write写入需要转换后的对象中,这是一个通用的方式。字符流与字节流之间的相互转换也是如此,但会用到下面的几个函数。
byte[] 转 string
String str = new String(byte[]);
string 转 byte[]
byte[] buffer=new byte[length];
buffer = str.getBytes();
string 转 char[]
char[] ch=new char[length];
ch=str.toArrayString();
输入流都有关于read的函数,而输出流都有关于write的函数。
字符流和字节流的read函数与write函数分别都是以字节数组和字符数组作为参数或返回值,通过这两个数组就能实现任意流中的转换。
哦,最后我还记得有一个函数。
in.transferTo(out) //直接将输入流in转换到输出流out。
下面是一个关于使用此函数下载图片的例子:
package com.wenba1314.url;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class PictureDownload {
public static void main(String[] args) throws IOException {
String address="http://mm.chinasareview.com/wp-content/uploads/2017a/07/21/01.jpg";
downloadImg(address);
}
public static void downloadImg(String address) throws IOException {
URL url=new URL(address);
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setDoInput(true);
conn.connect();
InputStream in=conn.getInputStream();
FileOutputStream out=new FileOutputStream("C:\\Users\\pc\\Desktop\\qwe.jpg");
in.transferTo(out);
in.close();
out.close();
System.out.println("图片下载成功!");
}
}