Java基础之IO流
很长时间都没有更新了,最近在补充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流的更多相关文章
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- java基础之IO流(一)字节流
java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
- Java基础之IO流整理
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
- 【java基础】]IO流
IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...
- java基础之 IO流
javaIO流 IO流 : (input output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方. IO技术的作用:主要就是解决设备和设备之间的数据传输问题 ...
- java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理
一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...
- java基础之io流总结一:io流概述
IO流概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.io流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. IO流的分类: 根据处理数据类型的不同分为:字符流 ...
- 黑马程序员——JAVA基础之IO流FileReader,FileWriter
------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...
- java基础06 IO流
IO用于在设备间进行数据传输的操作. Java IO流类图结构: IO流分类 字节流: InputStream FileInputStream BufferedInputStream Output ...
- java基础之IO流及递归理解
一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...
随机推荐
- ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...
- ABP框架 - Swagger UI 集成
文档目录 本节内容: 简介 Asp.net Core 安装 安装Nuget包 配置 测试 Asp.net 5.x 安装 安装Nuget包 配置 测试 简介 来自它的网页:“...使用一个Swagger ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
- 记一个mvn奇怪错误: Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for requi ...
- 渗透测试工具BurpSuite做网站的安全测试(基础版)
渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...
- 在 SAE 上部署 ThinkPHP 5.0 RC4
缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...
- 用C语言封装OC对象(耐心阅读,非常重要)
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...
- Android 工具-adb
Android 工具-adb 版权声明:本文为博主原创文章,未经博主允许不得转载. Android 开发中, adb 是开发者经常使用的工具,是 Android 开发者必须掌握的. Android D ...
- java中易错点(二)
java,exe是java虚拟机 javadoc.exe用来制作java文档 jdb.exe是java的调试器 javaprof,exe是剖析工具 解析一: sleep是线程类(Thread)的方法, ...
- BPM配置故事之案例2-文本默认值
Boss感觉方便了很多,然而采购部采购员阿海却还是有点意见,他跑来找小明. 阿海:现在申请都是我在提交,申请人和申请部门能不能不要每次都要填写啊,好麻烦的. 小明:没问题,这个简单. 小明在表单中把申 ...