如何把inputStream的内容转为字符串

2022-08-04 14:16:54

首先要知道,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();
				}
			}

		}
	}
}
  • 作者:水的精神
  • 原文链接:https://blog.csdn.net/star1210644725/article/details/117898261
    更新时间:2022-08-04 14:16:54