java学习7--Java I/O 操作与字节流
来源:互联网 发布:炫酷黑客收徒网站源码 编辑:程序博客网 时间:2024/04/29 18:27
1、File类
一个File类对象表示一个磁盘上的文件或者目录,File类提供了与平台无关的方法来磁盘上的文件或者目录操作。
File.separator可以用来表示系统的根目录,也可以用来表示分隔符,在window平台是\,unix下是/
与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 的值的第一个字符。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\\'。
pathSeparatorChar
public static final char pathSeparatorChar
与系统有关的路径分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 pathSeparatorChar。
File.createTempFile(prefix, suffix),在临时文件目录下创建临时文件,临时文件目录是在环境变量中设置的即TEMP。
2、流式I/O
流(stream)字节的源或者目的
两种流:输入流和输出流,输入流可以从中读取字段对象的流,输出流可以向其中写入字节的流对象。
3、流的分类
节点流:是从特定的地方读写的流类。例如磁盘或者内存区域。
过滤流:使用节点流作为输入输出,过滤流是使用已经存在的输入流或者输出流来创建连接。
4、InputStream抽象基础类
三个基本的方法:abstract int read() :读取一个字节的数据,返回一个整型的读到的数据,当返回-1说明读到输入流的结尾了。
int read(byte[] b):将读入的数据放到一个字节数组中,并返回实际所读入的字节数,如果返回-1,则说明读到输入流的末尾。
int read(betye[] b,int off,int len):将读入的数据放到一个字节数组中,并返回实际所读入的字节数,如果返回-1,则说明读到输入流的末尾。off字节数组b的起始偏移量,len指定读取的最大字节数。
其他方法:
long skip(long n)在输入流中跳过n个字节,并返回实际所跳过的字节数。
int available();返回在不发阻塞的情况下,可读取的字节数。
void close();关闭输入流,释放和这个系统相关的资源。
void mark(int readlimit);在输入流当前位置放置一个标记,如果读取的字节数大于readlimit时则忽略这个标记。(空实现)
void reset();返回到上一个标记,空实现的方法
boolean marksupported,判断当前流mark和reset方法是否支持。
5、OutputStream抽象基础类
三个基本的写方法:
abstract void write(int b) 往输入流中写入一个字节的数据,当出入的一个整型,实际只是写入了一个字节
void write(byte[] b)写入数字b的所有字节
void write(byte[] b,int off,int len)
其他方法:
void flush();刷新输出流,强制缓冲区中的输出字节被写出。只对使用了缓冲区的流类起作用。
void close();
6、BufferedOutputStream类
BufferedOutputStream是将输出流写到缓冲区中,所以只有缓冲区满了才会写到硬盘上,这是调用flush方法可以强制写到磁盘或者close方法。
BufferedInputStream类是将输入流读到缓存中。
7、DataInputStream和DataOutputStream读写入java基本数据类型。
8、PipedOutputStream和
PipedInputStream
他们总是成对出现的,管道流,用于线程间的通信,一个线程的PipedInputStream流从另一个线程的PipedOutputStream对象读取输入。
9、java是用unicode字符集来描述字符和字符串,Reader和Writer两个抽象类主要用来描述字符流。
InputStreamReader和OutputStreamWriter主要是起到桥梁的作用是字符流到字节流转换的类。
InputStreamReader主要实现了解码过程,讲字节解码成字符,OutputStreamWriter主要实现编码,讲字符编成字节。
10、RandomAccessFile类
11、对象的序列化
将对象转换为字节流保存起来,并在日后还原出来,这种机制称为对象的序列化。
将一个对象保存到一个永久存储设备上称为持续性。
一个对象想要实现序列化必须实现serializable或externalizable接口。
ObjectOutputStream类和ObjectInputStream类。writeObject和ReadObject方法。
当我们对一个对象进行反序列化的时候,并没有调用对象的任何构造方法,仅仅根据我们保存的对象的信息去重新还原对象。
a、我们对一个对象进行序列化的时候,只保存了非静态的成员变量,不能保存任何成员方法和静态变量。
b、当一个可序列化对象中的成员变量也是一个对象,那么这个对象的成员变量也会保存。
c、当可序列化对象中包括了一个非可序列化对象的引用时,这个对象就无法进行序列化操作了,也会跑出异常,我们可以将这个引用标记为transient,那么我们仍可以进行序列化。
d、我们也可以用transient来标记可序列化对象中的成员变量,那么这成员变量也不会保存。
有时候我们对于对象的信息有的保存有的不保存,那么可以通过private void readObject()和private void writeObject()2方法来实现,这两个方法不属于某个接口或者类,只是有这2个特殊的方法会在我们序列化的时候被调用。是私有的而且是个特例,在对象序列化和反序列化时可以被外部类调用。
- java学习7--Java I/O 操作与字节流
- JAVA I / O操作与字节流
- Java-I/O操作之File类、字节流
- Java I/O(一)字节流与字符流
- java I/O系统(3)-字节流与字符流
- java(I/O流 三---字节流)
- java编程 I/O编程--字节流
- Java I/O 字节流 文件复制
- 【Java.IO】I/O 字节处理流 - 之 - 内存(字节数组)操作流 - ByteArratInputStream,ByteArrayOutputStream
- Java I/O流操作
- Java-Java I/O流解读之基于字节的I / O和字节流
- Java I/O流(2)——java字节流操作
- JAVA I/O操作
- java I/O操作
- Java I/O操作
- Java I/O操作
- Java I/O操作
- java i/o操作
- 计算机--常用技术网站
- java.io.File操作文件的一些常用方法
- JS 动态加载下拉框
- Spring容器Bean的实例化方式和声明周期
- Xen的Hypervisor和Domain0的关系
- java学习7--Java I/O 操作与字节流
- 1.把二元查找树转变成排序的双向链表
- 谈一谈自己对依赖、关联、聚合和组合之间区别的理解
- Sqlite3编程初级入门
- 关于用户体验的一点看法
- OCH\OMS\OTS\MSP\RS\SPI解释
- STL SGI内存的管理
- Struts1学习笔记(1)-----MVC设计模式
- 再谈用户体验