很长时间都没有更新了,最近在补充JavaSE的一些细节部分

关于IO流的一些总结

首先要介绍的是File类,File类用于对文件和目录的一些操作

1.创建文件CreateNewFile()

2.对文件的信息的获取getName(),getAbsolutePath()

3.判断是否是文件isFile()

4.遍历整个目录下的文件 File[] listFile(),返回一个元素为文件的对象数组,可以使用方法来遍历数组


然后引入了流的概念

以内存为参考系,以方向可以分为输入流(读),输出流(写)

以流的内容来划分,可以分为字节流和字符流

上图四个类都是抽象类,由抽象类可以向下派生出多个子类

字节流是将各种数据通过字节(byte)来传输,比如视频,图片都可以转换为二进制,字符流是将数据通过字符(char)来传输,一般是文本文件

输入方法都有read()方法,用于读取文件数据,输出方法都有writer()方法,用于将数据写入文件


文件输入输出(实现类)

1.FileInputStream,FileInputStream (文件字节类)

2.FileReader,FileWriter (文件字符类)

//文件写操作
static void write(){ FileOutputStream out = new FileOutputStream("src\\test.txt");
String str = "HelloIOStream";
byte[] b = str.getbyte();
out.write(b);
out.close();
} //文件读操作
static void read(){
FileOutputStream in = new FileInputStream("src\\test.txt");
int temp;
while((temp = in.read()) != -1){
System.out.print((char)temp);
}
in.close(); }

转换流(实现类)

1.InputStreamReader (将InputStream类型转换为Reader类型)

2.OutputStreamWriter (将OutputStream类型转换为Writer类型)

这里补充一下标准输入输出流

1.标准输入流System.in(InputStream类型)

//直接从控制台读取
BufferedReader in= new BufferedReader(new InputStreamReader(System.in));
String temp = null;
while((temp = in.readLine())!=null){
System.out.println(temp);
}

2.标准输出流System.out

//直接写在控制台中
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
out.write("HelloWorld");
out.flush();
out.close();

缓冲输入输出流(实现类)

1.BufferedInputStream,BufferedOutputStream(缓冲字节流)

BufferedInputStream in = new BufferedInputStream(new FileInputStream(src\\test.txt));

2.BufferedReader,BufferedWriter(缓冲字符流)

缓冲流只不过是对文件流的封装,扩展了功能,可以将多个字节/字符同时读/写,大大提高效率

//FileInputStream作为参数
BufferedInputStream in = new BufferedInputStream(new FileInputStream(src\\test.txt));

在BufferedReader和BufferedWriter中分别新增了方法readLine()和newLine()

readLine()方法读取一行,返回字符串,如果没有下一行返回null

newLine()方法在写入文件的时候添加换行

打印流(实现类)

1.PrintOutputStream

2.PrintWriter

System.out.println();中System是类,in是其中的字段,它是OutputStream类型

所以可调用其中的print(),println()方法

对象序列化流

首先来谈谈什么叫做序列化,我们可以将一些普通的数据类型通过数据流存入文件,也可以将对象的状态持久化的保存在文件之中,而这个过程就称之为序列化,反之从文件之中获取对象称之为反序列化

1.ObjectInputStream,ObjectOutputStream 对象字节流

2.ObjectReader,ObjectWriter 对象字符流

  • 构造一个对象并继承Serializable接口,不进行序列化的字段加transient

      class Student implements Serializable{
    Student(int i , String n, int a){
    id = i;
    name = n;
    age = a;
    }
    int id;
    String name;
    transient int age;
    }
  • 将对象作为参数引入流中

      //将对象写入到流中
    static void write(){
    Student s1 = new Student(1,"lilili",18);
    Student s2 = new Student(2,"asdasd",23);
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("src\\test.txt"));
    out.writeObject(s1);
    out.writeObject(s2);
    out.flush(); //刷新流
    out.close();
    } //将对象从流中读取出来
    static void read()
    {
    ObjectInputStream in = new ObjectInputStream(new FileOutputStream(""src\\test.txt));
    Student temp;
    while((temp =(Student)in.readObject())!= null){
    System.out.println(temp.id+temp.name+temp.age);
    }
    }

Java基础之IO流的更多相关文章

  1. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  2. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

  3. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  4. 【java基础】]IO流

    IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...

  5. java基础之 IO流

    javaIO流   IO流 : (input  output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方.   IO技术的作用:主要就是解决设备和设备之间的数据传输问题 ...

  6. java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理

    一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...

  7. java基础之io流总结一:io流概述

    IO流概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.io流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. IO流的分类: 根据处理数据类型的不同分为:字符流 ...

  8. 黑马程序员——JAVA基础之IO流FileReader,FileWriter

    ------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流  IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...

  9. java基础06 IO流

    IO用于在设备间进行数据传输的操作. Java IO流类图结构:   IO流分类 字节流: InputStream FileInputStream BufferedInputStream Output ...

  10. java基础之IO流及递归理解

    一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...

随机推荐

  1. redux学习

    redux学习: 1.应用只有一个store,用于保存整个应用的所有的状态数据信息,即state,一个state对应一个页面的所需信息 注意:他只负责保存state,接收action, 从store. ...

  2. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  3. Xamarin+Prism开发详解一:PCL跨平台类库与Profile的关系

    在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]中提到过以下错误,不知道大伙还记得不: 无法安装程序包"Microsoft.Identity.Client 1.0. ...

  4. ES6的一些常用特性

    由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...

  5. MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决

    一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是一种数据库管理系统. MySQL是一种关联数据库管理系统. MySQ ...

  6. Unity3D框架插件uFrame实践记录(二)

    5.创建属性和命令 本小节主要内容包括: 在Element节点上创建属性数据 在Element节点上创建命令数据 5.1.在Element节点上创建属性数据 在这里,我们首先为Login节点中的属性( ...

  7. 《LoadRunner12七天速成宝典》来了

    看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果.如果非要说第四本书的感受,那 ...

  8. Block解析(iOS)

    1. 操作系统中的栈和堆 我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方 ...

  9. [转]Java实现定时任务的三种方法

    在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...

  10. 牛顿法求平方根 scala

    你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...