首先要知道,inoutSteam 是字节流,也就是二进制数字。 想要转为字符,首先要做的是把字节流转为字符流,然后再利用缓冲字符流,把内容取出来转为字符串。
不明白的话,需要补一点知识:https://blog.csdn.net/wangbaochu/article/details/53484042
https://blog.csdn.net/hskw444273663/article/details/85706136
https://blog.csdn.net/zhaoyanjun6/article/details/54894451
用一个案例来说说,如何把inputStream转为字符串
package BufferedReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class Test_BufferedReader {
/*
* 字节流——字符流——缓存输出的字符流
*/
private String getStream(String url){
try {
//得到字节流,这里是请求了一个网页,拿到一个相应的数据的字节流
InputStream in = new URL(url).openStream();
//将字节流转化成字符流,并指定字符集
InputStreamReader isr = new InputStreamReader(in,"UTF-8");
//将字符流以缓存的形式一行一行输出
BufferedReader bf = new BufferedReader(isr);
String results = "";
String newLine = "";
while((newLine = bf.readLine()) != null){
results += newLine+"\n";
}
return results;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// 流关闭
if( isr != null){
try {
isr .close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String URL = "http://www.baidu.com";
Test_BufferedReader test = new Test_BufferedReader();
System.out.println(test.getStream(URL));
}
}
再看一个案例,把一个文件内容复制到另外一个文件
package com.app;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class A3 {
public static void main(String[] args) throws IOException {
String filePath = "F:/123.png" ;
String filePath2 = "F:/abc.png" ;
File file = new File( filePath ) ;
File file2 = new File( filePath2 ) ;
copyFile( file , file2 );
}
/**
* 复制文件
* @param oldFile
* @param newFile
*/
public static void copyFile( File oldFile , File newFile){
InputStream inputStream = null ;
BufferedInputStream bufferedInputStream = null ;
OutputStream outputStream = null ;
BufferedOutputStream bufferedOutputStream = null ;
try {
//拿到字节流
inputStream = new FileInputStream( oldFile ) ;
bufferedInputStream = new BufferedInputStream( inputStream ) ;
outputStream = new FileOutputStream( newFile ) ;
bufferedOutputStream = new BufferedOutputStream( outputStream ) ;
byte[] b=new byte[1024]; //代表一次最多读取1KB的内容
int length = 0 ; //代表实际读取的字节数
while( (length = bufferedInputStream.read( b ) )!= -1 ){
//length 代表实际读取的字节数
bufferedOutputStream.write(b, 0, length );
}
//缓冲区的内容写入到文件
bufferedOutputStream.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}finally {
if( bufferedOutputStream != null ){
try {
bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if( bufferedInputStream != null){
try {
bufferedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if( inputStream != null ){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if ( outputStream != null ) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}