zoukankan      html  css  js  c++  java
  • javaIO流的结合使用

    InputStream,InputStreamReader和BufferedReader

    1. InputStream:抽象类,基类,为面向字节的I/O,用于读写文本,它能输出字节流;
    2. InputStreamReader : 是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符;
    3. BufferedReader : 提供通用的缓冲方式文本读取,readLine读取一个文本行, 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

    使用场景

    有时我们需要把来自于"字节"层次结构的类和"字符"层次结构的类结合起来使用,为了实现这个目的,必须要使用到适配器类(adapter),InputStreamReader可以将InputStream(字节流)转化为Reader(unicode字符流),OutputStream也是如此。

    例如可以把读入的字节流转换成字符流输出:

    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)  IOException {
            InputStream inputStream = request.getInputStream();//通过输入流获取客户端传来的数据流
            Reader reader =  new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(reader);
            //通过输出流将数据流输出到本地硬盘
    
            String path = request.getServletContext().getRealPath("file/copy.txt");//获取文件的绝对路径
            FileOutputStream outputStream = new FileOutputStream(path);//用来打开一个输入文件
            Writer writer = new OutputStreamWriter(outputStream);//创建字符写入流
            BufferedWriter bufferedWriter = new BufferedWriter(writer);//使用缓冲流包装
            String str = "";
            while((str = bufferedReader.readLine())!=null){
                bufferedWriter.write(str);
            }
            bufferedReader.close();
            reader.close();
            inputStream.close();
            //对于这里Writer和bufferwriter来说,由于Writer是被修饰者,所以应该先关闭bufferWriter()修饰者,否则会抛出异常
            bufferedWriter.close();
            writer.close();
            outputStream.close();
            }
    

    DataOutputStream与outputStream以及BufferedReader共同使用

    当文件流和缓冲区流的处理是字节或者字节数组时,利用DataOutputStream可以实现对文件不同数据类型的读写。

    JavaIO流之DataOutputStream

    try {
    			Socket s = new Socket(InetAddress.getByName("127.0.0.1"), 8001); //需要服务端先开启
    
    			//同一个通道,服务端的输出流就是客户端的输入流;服务端的输入流就是客户端的输出流
    			OutputStream ops = s.getOutputStream();  //开启通道的输出流
    			DataOutputStream dos = new DataOutputStream(ops);//使用DataOutputStream实现字节到String类型的转变
    			while (true)
    			{
    				String strWord = brKey.readLine();
    				if (strWord.equalsIgnoreCase("quit"))
    				{
    					break;
    				}
    				else
    				{
    					System.out.println("I want to send: " + strWord);
    					dos.writeBytes(strWord + System.getProperty("line.separator"));//将字符串按字节顺序写出到基础输出流中
    				}
    			}
    			dos.close();
    			s.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
  • 相关阅读:
    Makefile中的函数
    Android命令行工具使用总结
    功耗杂项笔记汇总
    Repo学习笔记
    CPU调度——EAS调度器
    Android log常用分析方法
    event log 分析
    用户空间控制驱动与设备的绑定与解绑
    内核工具 – Sparse 简介
    在docker宿主机上查找指定容器内运行的所有进程的PID
  • 原文地址:https://www.cnblogs.com/innndown/p/12404052.html
Copyright © 2011-2022 走看看