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. CSS——属性选择器

    属性选择器:通过对标签中属性的选择,控制标签. <!DOCTYPE html> <html> <head> <style> div[class*=&qu ...

  2. 在Yosemite中创建个人站点

    Yosemite变动很大,随之而来的就是一堆坑,之前在旧版OS中有效的方法在新版OS上已经不起作用了,创建个人站点就是一例. Mac OS内置Apache,安装目录在/etc/apache2/,etc ...

  3. CSS3:变换和动画

    <html> <style> .container{ -webkit-perspective: 800; -webkit-perspective-origin: 50% 40% ...

  4. 发布自己的nuget包

    1.先到www.nuget.org注册账户,然后在用户中心获取apikey 2.到https://dist.nuget.org/index.html下载最新的nuget.exe,放到你的项目根目录下 ...

  5. 记录--git命令行上传项目到github仓库

    由于公司一直使用的是的SVN,基本上都是内网,原来的git命令都快忘记了,当然也是自己太懒,平时都是直接拖到github上.今天打开idea后突然看到了原来自己写好的一个项目,就想将它上传到githu ...

  6. Django - 获取表单数据的三种方式

    1.query set 对象 2.字典 3.query set 元组 备注:对象通过 ”对象.列名"方式访问,元组通过“对象.索引”方式访问.

  7. ESP、EBP、CALL 指令与局部变量浅析

    概述 函数调用是计算机程序中一个最重要的概念之一,从汇编的角度看,能更加直观地理解函数调用的原理,理解 CALL 指令调用过程中 ESP.EBP 寄存器的作用. 我们先从一段简陋的 C 语言代码说起, ...

  8. css 样式 解释

    字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 {font-style: obl ...

  9. homework week 1

    第一周的作业 首先来完成第二个作业, 编写登录接口, 因为视频上并没有相关的教程, 就在网上搜了一下读写文件的语句, 粗略了解. f1 = open("data.txt",&quo ...

  10. group by语句,聚合函数与其他语句(关系,执行过程)

    (本文一切基于SQL SERVER 2008 R2) 先来看一个语句执行过程发生的错误提示: 消息 8120,级别 16,状态 1,第 2 行 选择列表中的列 'SC.CNO' 无效,因为该列没有包含 ...