zoukankan      html  css  js  c++  java
  • Java IO流

    IO流

    File 类

    在创建对象的时候需要传入文件的路径名,这里需要注意绝对路径和相对路径的关系:

    1. 绝对路径来说,从系统根目录开始写,这个是没有问题的。
    2. 相对路径来说,根目录是当前项目的根目录

    File 类有很多的方法直接操作文件属性。

    File file = new File("a.txt");
    		try {
    			file.createNewFile();
    			System.out.println("绝对路径是: " + file.getAbsolutePath());
    			System.out.println("相对路径是: " + file.getPath());
    			System.out.println("文件是" + (file.canWrite()?"可":"不可") +"写的。");
    			file.delete();
    			File f1 = new File("a/b/c");
    			f1.mkdirs();
    			f1.delete();
    			
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    

    字节输入流(InputStream)

    InputStream 字节流,操作文件的子类FileInputStream调用 read() 方法,默认读一个字节,如果读到文件末尾,返回的是-1。

    可以传入参数,参数是字节数组,而此时的返回值就是读入的字节数。

    字节输出流(OutputStream)

    输入流就比较简单,通常调用write() 方法就好了,参数传入一个需要写入的字节数组。需要注意的就是,在进行创建输出流对象的时候,FileOutputStream(String pathName,boolean append) 第二个参数表示是否在文件中追加,true为追加,false为覆盖原来内容,不追加。

    字节流读二进制文件

    DataInputStream 类通常用来读取二进制文件,它是 FileInputStream 的

    输入流和输出流的区别

    输入流和输出流是针对 jvm 来说的,从硬盘中向 jvm 中读入数据,所以就叫做input;而从 jvm 中向硬盘写出数据,所以就叫做output。

    字符输入流

    字节流和字符流等于是按照读入或者写入的单位不同划分的,InputStream 和 Reader 分为别是字节流和字符流的基类。

    常用的子类有,BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

    把字节流转化为字符流的过程

    FileInputStream fis = new FileInputStream("src\test.txt");//创建文件字节流
    InputStreamReader isr = new InputStreamReader(fis);//把字节流转化为字符流
    BufferedReader br = new BufferedReader(isr);//BufferedReader 是InputStream的子类,调用这一个类的目的是使用 readLine() 方法
    

    字符输出流

    字符输出流的的基类是 Writer 类,可以读入一个字符串。比较容易接受。

    对象的序列化和反序列化

    1. 序列化:把对象以字节流的形式写到文件里。
    2. 反序列化:从文件中以字节流的形式读入并返回一个对象

    使用到的类 ObjectOutputStream 和 ObjectInputStream 两个类。

    ObjectOutputStream write():把对象写入到文件中 ObjectInputStream read()的:从文件中读取对象。

    graph TD A[输入输出流] --> B[字节流] A --> C[字符流] B --> D[InputStream 输入流基类] D --> d[ObjectOutPutStream 对象输入流] B --> E[OutPutStream 输出流基类] E --> e[ObjectOutPutStream 对象输出流] C --> F[Writer 输出流基类] C --> G[Reader 输入流基类] D --> H[FileInputStream] E --> I[FileOutputStream] H --> J[DataInputStream 用于读取二进制文件] I --> K[DataOutPutStream 用于写入二进制文件] F --> L[FileWriter 一次写入一个字符] G --> M[FileReader 一次读入一个字符] E --> N[OutputStreamWriter 把字节流转化为字符流] F --> N
  • 相关阅读:
    马哥学习笔记三——DNS服务
    rndc
    DNS服务器解析错误:server can't find 168.220.168.192.in-addr.arpa: SERVFAIL
    python学习笔记十一——类和对象
    启动或重启DNS服务时,卡在Generating /etc/rndc.key:上
    python学习笔记十——异常处理
    python学习笔记九——文件与目录
    马哥学习笔记一——ssh服务
    python学习笔记八——正则表达式
    python学习笔记七——模块和包
  • 原文地址:https://www.cnblogs.com/zhaoningzyn/p/12372055.html
Copyright © 2011-2022 走看看