A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李治锋 中级黑马   /  2015-9-7 08:04  /  1212 人查看  /  21 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

文件与IO流

File类

File类表示文件和目录名

File类可以实现文件的创建、删除、重命名、得到路径、创建时间等

File类操作方法

public static final String separator    表示路径分隔符“\”

public File(String pathname)    构造File类实例,要传入的路径

public boolean createNewFile()    创建新文件

public boolean isDirectory()    判断给定的路径是否是文件夹

IO流

输入输出流(Input/Output)

字符流

OutputStream

InputStream

字节流

OutputWriter

InputReader

缓冲流

缓冲流的好处是能够更高效的读写信息

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

打印流

字节打印流PrintStream

字符打印流PrintWriter

打印流可以很 方便的进行输出

对象流

ObjectOutputStream类实现对象的序列化

ObjectInputStream类实现反序列

字节数组流

ByteArrayInputStream

ByteArrayOutputStream

数据流

跟具数据类型的大小来读取

dataInputStream

dataOutputStream

字符串流

StringWriter

StringReader

IO包中的类

RandomAccessFile:有强大的文件读写功能,其内部是大型byte[],可以通过seek(),getFilePointer()等方法操作的指针,方便对数据进行写入和读取。还可以的基本数据类型进行直接的读和写操作

大多数功能已经被nio的内存映射文件(memory-mapped files)给取代了。

装饰者模式

适用于支持每一种组合将生产大量的子类,使得子类数目呈爆炸性增长。另一种可能是因为类定义被隐藏,或类定义不能用于生成子类。

类图

Component(被装饰对象基类)

定义对象的接口,可以给这些对象动态增加职责;

ConcreteComponent(具体被装饰对象)

定义具体的对象,Decorator可以给它增加额外的职责

Decorator(装饰者抽象类)

维护指向Component实例的引用,定义与Component一致的接口;

ConcreteDecorator(具体装饰类)

具体的装饰对象,给内部持有的具体被装饰对象增加具体的职责;

常见的字符编码

常见编码有:ISO8859-1、GBK/GB2312、unicode、UTF。

iso8859-1

编码属于单字节编码,最多只能表示0--255的字符范围,主要在英文上应用

GBK/GB2312:

中文的国际编码,专门用来表示汉字,是双字节编码

unicode

java中就是使用此编码方式,也是最标准的一种编码方式,是使用16进制表示的编码。但此编码不兼容iso8859-1编码

UTF

由于uincode不支持iso8859-1编码,而且容易占用更多的空间,而且对于英文母也需要使用两个字节编码,这样使用unicode不便于传输和储存,因此产生了utf编码兼容了iso8895-1编码,也可以用来表示所有语言字符,不过utf是不定长编码,每个字符的长度从1——6个字节不等,一般在中文网页中使用此编码,因为这样可以节省空间

造成乱码的原因

程序使用的编码与本机的编码不一致

在网路中,客户端与服务端编码不统一

New IO

NIO

NIO的创建目的是为了让java程序员可以实现高速I/O而无需编写自定义的本机代码。NIO将最耗时的I/O操作转移回操作系统,因而可以极大地提高速度。

流与块的比较

面向流的I/O系统一次一个字节地处理数据。面向流的I/O通常慢

面向块的I/O系统以块的形式处理数据。按块处理数据比按字节处理数据要快的多。但是面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性。

缓冲区

在NIO库中,所有的数据都是在缓冲区处理的。在读数据时,它直接读缓冲区中的。在写入数据时,它是写入缓冲区中的。任何时候访问NIO中的数据,您都是将它放到缓冲区中

缓冲区实质上是一个数组。通常它是一个字节数组,但也可以使用其他种类的数组。但是一个缓冲区不仅仅是一个数组。缓冲区提供了对数据的结构访问,而且还可以跟踪系统的读写进程

缓冲区类型

最常用的缓冲区类型是ByteBuffer.一个ButeBuffer可以在其底层字节数组上进行get/set操作(即字节的获取和设置)。

Char

Short

Int

Long

Float

Doudle

缓冲区内部细节

状态变量

position        limit          capacity

通道Channel

Channel是一个对象,可以通过它读取和写入数据。拿NIO与原来的I/O做个比较,通道就像是流

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

21 个回复

倒序浏览
qiangqiangqiang
回复 使用道具 举报
wuming668 来自手机 中级黑马 2015-9-7 09:01:12
藤椅
我给你增加点人气,你给我点技术分吧。
回复 使用道具 举报
不明觉厉
回复 使用道具 举报

赞赞赞赞赞赞
回复 使用道具 举报
学习了,I learn it today
回复 使用道具 举报
好长。。。
回复 使用道具 举报
帖子整得好。
长!!
回复 使用道具 举报
那个问你个问题。那个流对象内置了编码表。这可是以后老师会问的!事先提醒不要谢
回复 使用道具 举报
赞一个
回复 使用道具 举报
就是很多的啦      
回复 使用道具 举报
wuming668 发表于 2015-9-7 09:01
我给你增加点人气,你给我点技术分吧。

在这里谢了
回复 使用道具 举报

初次发帖谢谢参与
回复 使用道具 举报

初次发帖这是什么表情
回复 使用道具 举报
666666666666666666666
回复 使用道具 举报
每天都能学点儿,谢谢分享.
回复 使用道具 举报

给点分,
回复 使用道具 举报
wuming668 发表于 2015-9-7 09:01
我给你增加点人气,你给我点技术分吧。

非常感谢了
回复 使用道具 举报

一般般还好
回复 使用道具 举报
Vincent饭饭 发表于 2015-9-7 09:36
学习了,I learn it today

谢谢评贴了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马