zoukankan      html  css  js  c++  java
  • Java I/O流概念

    一、流的分类

    1. 按数据流动方向:

    • 输入流:只能从中读取字节数据,而不能向其写出数据
    • 输出流:只能向其写入字节数据,而不能从中读取数据

    2. 按照流的数据类型:

    • 字节流:用于处理字节数据,一次读入或读出是8位二进制。
    • 字符流:用于处理Unicode字符数据,一次读入或读出是16位二进制。

    3.按照实现功能不同可以分为:

    • 节点流(低级流):从/向一个特定的IO设备读/写数据的流。
    • 处理流(高级流):对已存在的流进行连接和封装的流。

    二:java中io中常用的流

    1.对文件进行操作

    FileInputStream(字节输入流),FileOutputStream(字节输出流),FileReader(字符输入流),FileWriter(字符输出流)

    2.对管道进行操作:

    PipedInputStream(字节输入流),PipedOutStream(字节输出流),PipedReader(字符输入流),PipedWriter(字符输出流)

    3.字节/字符数组:

    ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter是在内存中开辟了一个字节或字符数组。

    4.转化流:

    InputStreamReader,OutputStreamWriter,把字节转化成字符。

    5.数据流:

    DataInputStream,DataOutputStream。

    6.Buffered缓冲流:

    BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,是带缓冲区的处理流,缓冲区的作用的主要目的是:避免每次和硬盘打交道,提高数据访问的效率。

    7.打印流:

    printStream,printWriter。

    8.对象流:

    ObjectInputStream(反序列化对象输入流),ObjectOutputStream(序列化对象输出流)。

    三:举例说明流的使用

    /**
    *导入的头文件
    */
    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;
    /** * 字节输入输出流测试 * * @author Nikita * */ public class IOTest { public static void main(String[] args) { StringBuffer buffer = new StringBuffer(); // 字符串缓冲 /* 输入流 */ InputStream in = null; try { // 1. 打开输入流 in = new FileInputStream("E:\jg\exercise.txt");//从一个路径中打开输入流读取内容 // 2. 读取 byte[] b = new byte[1024 * 4]; int len = in.read(b); // 返回读取到的字节数,返回-1表示读取到流结尾 while(len != -1){ buffer.append(new String(b, 0, len)); // 将读取到的字节解析为String追加到缓冲 len = in.read(b); } System.out.println(buffer.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 3. 释放资源,关闭输入流 if (in != null){ try { in.close();//调用close()方法 } catch (IOException e) { e.printStackTrace(); } } } /* 输出流 */ OutputStream out = null; try { File file = new File("D:\test\demo\test.txt");//将目标文件路径放置在一个指定位置写入内容 if (!file.getParentFile().exists()){ // 文件路径不存在,则创建路径中所有不存在的目录 file.getParentFile().mkdirs(); } // 1. 打开输出流 out = new FileOutputStream(file); // 2. 写 out.write(buffer.toString().getBytes()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 3. 释放输出流资源 if (out != null){ try {out.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
  • 相关阅读:
    2020寒假学习进度报告1
    Linux系统的安装和常用命令
    scala安装教程及简单配置
    03.大型数据库应用技术课堂测试3(java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V)
    2019暑假第三周(HDFS和HBase)
    java.io.FileNotFoundException: /usr/local/hadoop/logs/fairscheduler-statedump.log(权限不够)解决方案
    2019暑假第二周(hadoop在个人电脑上的搭建)
    Flask 入门(第一篇)
    rest framework 节流
    rest framework 权限
  • 原文地址:https://www.cnblogs.com/g398429959/p/4454896.html
Copyright © 2011-2022 走看看