1.JavaI/O 系统概述

A.  输入输出(I/O):指的是计算机与外部世界,或者一个程序与计算机的其余部分之间的接口

B. 流的概念(流:Stream)

流的基本特性:有数据、有方向

2. 流的分类

A.按数据流的方向分:

a. 输入流:从数据源到应用程序(类:InputStream、Reader)

b. 输出流:从应用程序到数据源(类:OutputStream、Writer)

B. 按处理数据的最小单位的不同分

a. 字节流:(最小单位:byte) (类:InputStream、 OutputStream)

b. 字符流:(最小单位:char) (类: Reader 、 Writer)

C. 按流的功能分:

a. 节点流(低级流)

b.  处理流(高级流)

判断一个流是否是高级流:查看该类的构造器,如果类的构造器带有一个已存在的流作为参数,则是高级流

所有I/O操作的步骤:

建立流、读写流、关闭流

3. 文件类(File类)

A. 创建对象:File file = new File(“test.txt”);

4. 字节流:所有面向字节的流类都继承于InputStream类(输入流)或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能。

A.InputStream类

InputStream in = null;

In = new FileInputStream(“test.txt”);

方法:

close():  关闭输入流

read():从流中读取下一个字节

read(byte[ ]  b): 从输入流中读取一些字节,并存入数组b

read(byte[ ] b, int off, int len):从输入流中读取前len个字节并存入数组b

B.OutputStream类

OutputStream out = null;

out = new FileOutputStream(“test.txt”);

方法:

close():关闭该输出流

write(byte[] b):将 b.length 个字节从指定的字节数组写入此输出流

write(byte[] b, int off, int len) :将指定字节数组中从偏移量 off 开始的 len 个字节写入此输出流

5. 字符流

A.字符输入流Reader:

Reader类中两个常用类:

FileReader:以字符流的形式读取文件,与FileInputStream 用法基本一致

BufferedReader:将流读入缓冲区,然后从缓冲区读取,并且提供了readLine()方法,可以从文本文件中整行的读取数据

Reader r = null;

r = new FileReader(“test.txt”);

B.字符输出流Writer:

Writer类中两个常用类:

FileWriter:以字符流的形式写入文件,与FileOutputStream用法基本一致

BufferedWriter:将缓冲区输出到流

Writer w = null;

w = new FileWriter(“test.txt”);

6. 对象流

A. ObjectInputStream:对象输入流

B. ObjectOutputStream:对象输出流,注意在对象从内存保存到硬盘这个过程中,我们需要先将对象转化成字节流在进行保存,这个过程叫做对象的序列化。只要让对象实现Serializable接口即可,从硬盘读取对象到内存这个过程称为反序列化。

JavaI/O 系统的更多相关文章

  1. JavaI/O系统

    I/O:(输入/输出)指的是计算机与外部世界,或者一个与计算机其余部分的接口.它对任何计算机系统都非常关键. Java类库中有大量的类,帮助我们从不同的设备读取数据并保存或输出到不同的设备中. 这些类 ...

  2. JavaI/O系统2

    数据流: DataInputStream,DataOutputStream.可以用于与计算机无关的格式读写java的基本数据类型以及String对象 对象流: ObjectInputStream,Ob ...

  3. Lucene的入门

    Lucene准备 Lucene可以在官网上下载,我这里已经下载好了,用的是4.10.3版本的, 解压以后的文件为: 如果没有使用maven管理的话,就需要引入这三个jar包,实现lucene功能. 我 ...

  4. JAVA编程不得不看的几本经典书籍

    为了帮助对java编程感兴趣的同学更好.更快的提高编程技术,武汉北大青鸟光谷校区专业老师在此推荐几本学习编程非常有用的书籍,以供大家参考. 入门类 1.<java从入门到精通>(第3版) ...

  5. 学习Java的书籍资料

    对于程序员来说,编程技术至关重要,然而技术的提高不是一蹴而就的,它需要时间的积累和经验的沉淀.因此本文为大家推荐Java学习的书籍,学虽容易,学好不易,且学且珍惜. 基础类.<Java从入门到精 ...

  6. 2012高校GIS论坛

    江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...

  7. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  8. 数据库优化案例——————某市中心医院HIS系统

    记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...

  9. ABP文档 - 通知系统

    文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发 ...

随机推荐

  1. day02-操作系统、编程语言分类及python安装

    目录 操作系统 编程语言分类 安装python解释器 操作系统 操作系统有什么用 操作系统能接受外部指令转化成0和1,并把一些对硬件的复杂操作简化成一个个简单的接口,作为中间人连接硬件和软件 计算机三 ...

  2. ES6 中set的用法

  3. AcRxClass::addX

    AcRxClass::addX函数 virtual AcRxObject * addX( AcRxClass* pProtocolClass, AcRxObject* pProtocolObject) ...

  4. Java中Math对象的属性与方法

    Math.sqrt() ——————>计算平方根Math.cbrt()————————>计算立方根Math.pow(a, b)——————————>计算a的b次方Math.max( ...

  5. JS DOM节点(当前标签和同级、父级、子级..之间的关系)

    1. 通过顶层document节点获取    1) document.getElementById(elementId) //根据id获得    2) document.getElementsByNa ...

  6. 【第四课】kaggle案例分析四

    Evernote Export 比赛题目介绍 facebook想要准确的知道用户登录的地点,从而可以为用户提供更准确的服务 为了比赛,facebook创建了一个虚拟世界地图,地图面积为100km2,其 ...

  7. 环形缓冲区: ringbuf.c

    #cat aa.c /*ringbuf .c*/ #include<stdio.h> #include<ctype.h> #define NMAX 8 int iput = 0 ...

  8. [C#] Linq 动态条件查询

    应用背景:以货品为例,在基础数据中配置货品的判断规则,要根据这个规则筛选出符合条件的集合. 创建货品类 public class Product { public string Name { get; ...

  9. Oracle存储过程及函数的练习题

    --存储过程.函数练习题 --(1)创建一个存储过程,以员工号为参数,输出该员工的工资create or replace procedure p_sxt1(v_empno in emp.empno%t ...

  10. Python那点事

    目录 Python那点事 一. Python介绍 二. 目前python的主要领域 三.Python的运用 四. Python的发展史 Python的种类 Python那点事 相信很多小伙伴会跳过此环 ...