-
File类
-
构造函数:
-
File fille = new File(String file);
-
File fille = new File(String parent,String child);
-
File fille = new File(File parentfile,String child);
-
方法
canRead() canWrite() length() isFile() renameTo() isDirectory() isHidden() exists() createNewFile() mkdir() mkdirs() delete() 删除目录时,其下必须是空文件。
getName() 文件或目录的名称 getAbsolutePath() 抽象路径名的绝对路径名字符串。 getParent() 父路径名的路径名字符串 long lastModified()
File[] listFiles() 此抽象路径名表示的目录中的文件和目录
-
不希望获取全部子项, FileFilter是用于抽象路径名的过滤器
File[] list = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().startsWith("."); }});
-
层级分隔符File.separator,在window系统中new File("D:\t\t.txt");而在linux系统中是new File("/t/t.txt");为了解决兼容使用new File("D:"+File.separator +"t"+File.separator +"t.txt");
-
RandomAccessFile-文件操作类
-
对文件随机访问的操作,访问包括读和写操作。该类名为 RandomAccessFile。该类的读写是基于指针的操作。RandomAccessFile在对 文件进行随机访问操作时有两个模式,分别为只读模式(只读取文件数据 r),和读写模式(对文件数据进行读写 rw,rw时文件不存在会自动创建)。如果此类中的所有读取例程在 读取所需数量的字节之前已到达文件末尾,则抛出 EOFExcept
-
如果由于某些原因无法读取任何字节,而不是在读取所需 数量的字节之前已到达文件末尾,则抛出 IOException
RandomAccessFile(String filename,String mode)
RandomAccessFile(File file,String mode)
-
方法(都抛出IOException)
-
Read、write基本数据类型,字符串(readUTF() readLine())
-
void write(int d) 该方法会根据当前指针所在位置处写入一个字节, 是将参数int的”低8位”写入。
-
Write(byte[b]) Write(byte[b],int start,int len)
-
int read() 指针位置读取一个byte(8位) 填充到int的低八位, 高 24位为0, 返回值范围正数: 0~255, 如果返回-1表示读取到了文件末尾EOF 每次读取后自动移动文件指针, 准备下次读取。返回值为实际读取到的字节量
-
int read(byte[] b) 最多读取b.length个字节到数组,返回实际读取字节个数。
-
int read(byte[b],int off,int len) 从 off处开始读len个字节,返回实际读取字节个数。
-
long getFilePointer() 获取当前指针位置的方法
-
void seek(long pos)该方法可以移动指针到指定位置。
-
int skipBytes(int n)尝试跳过输入的 n 个字节以丢弃跳过的字 节, n 为负数,则不跳过任何字节
-
length()
-
void close() 释放与其关联的所有系统资源。
-
字节流:InputStream和OutputStream
Input:外部到内存写入 output:内存输出到外部
节点流、处理流:节点流和节点直接相连,处理流套结在节点流上进行封装,读取数据。
-
OutputStream方法(抛出IOException)
-
void write(int n) 低八位写入
-
void write(byte[] b) 写入字节数组
-
void write(byte[] b,int off,int len) 字节位置、长度
-
Void close()
-
InputStream方法(抛出IOException)
-
int
read() 从输入流中读取数据的下一个字节,结束返回-1
-
int
read(byte[] b) 最多读取b.length个字节到数组,返回实际读取字节个数。
-
int
read(byte[] b, int off, int len) 将输入流中最多 len 个 数据字节读入 byte 数组。返回实际读取的个数。
-
void close() 关闭流
-
字符流:Reader和Writer(使用了缓存区)
-
字符流是以字符为单位读写数据,所以字符流仅能读写文本数据,本质上字符流读写字符是会自动与字节进行转换进行读写,所以底层还是读写字节。
-
方法:同上,都抛出IOException
Reader方法:
-
int
read() 从输入流中读取数据的下一个字符
-
-
int
read(char[] b, int off, int len) 将输入流中最多 len 个 数据字符读入 char 数组。
-
void close() 关闭流
Write方法:
-
void write(int n) 低16位(2个字节)写入
-
void write(char[] b) 写入字符数组
-
void write(char[] b,int off,,int len) 字符位置、长度
-
Void close()
-
-
FileInputStream和FileOutputStream(操作磁盘文件)
-
FileOutputStream
-
构造方法:(如果不存在,会创建一个文件)
-
-
-
New FileOutputStream(File file,boolean b)向文件末尾write
-
方法:同OutputStream
-
FileInputStream(同InputStream)
-
FileReader和FileWriter(参考RW)(如果不存在,会创建一个文件)
-
New FileWriter(File file)(若文件有数据,write将会清除数据)
-
New FileWriter(String name)
-
New FileWriter(File file,boolean b)是否在文本后添加
-
New FileWriter(String str,boolean b)
-
带缓存的IO流:(套接在其他流之中):缓冲流有一个数组,读取的时候会读取一个数组存入,read()读取一个字节
-
BufferedInputStream和BufferedOutputStream
-
BufferedOutputStream(增加了一个flush()方法把缓存的数据输出)
-
BufferedReader和BufferedWrit er
-
构造方法
-
BufferedReader增加String readLine()方法,为空返回null
-
Bu`fferedWriter增newLine() 写入一个行分隔符。
-
转换流(InputStreamReader和OutpteStreamWirter)
-
很多字符流都只能处理其他字符流,但是低级流都是字节流,所以就需要现将字节流转换成字符流才可以被其他高级流使用。转换流还能指定读写字符的字符集。
-
构造函数
InputStreamReader(InputStream in)使用默认字符编码
InputStreamReader(InputStream in,字符集)使用自定义字符集
-
InputStreamReader是字节流通向字符流的桥梁,读取字节并将其解码为字符
Int read(char[] c) 读取字符数组
Int
read(char[] c, int offset, int length)将字符读入数组中的某一部分。
-
OutputStreamWriter 是字符流通向字节流的桥梁
write(char[] c)
write(char[] cbuf, int off, int len) 写入字符数组的某一部分。
-
DataInputStream和DataOutputStream
-
-
Read()、write() 读写基本数据类型
-
字符串方法:
-
DataInputStream提供
readUTF()
-
DataOutputStream提供
writeBytes(String s)
writeChars(String s)
writeUTF(String s)写入字符串
-
对象流(ObjectInputStream和ObjectOutputStream)
-
含义:对象是存在于内存中的。有时候我们需要将对象保存到硬盘上,又有时我们需要将对象传输到另一台计算机上等等这样的操作。这时我们需要将对象转换为一个字节序列,而这个过程就称为对象序列化。相反,我们有这样一个字节序列需要将其转换为对应的对象,这个过程就称为对象的反序列化。
-
构造函数
ObjectInputStream(InputStream in)
ObjectOutputStream(OutputStream out)
-
ObjectOutputStream把对象序列化方法:
-
void writeObject(Object o) 把对象的类变量、方法,类签名序列 化, 静态变量和静态方法不能被序列化。
-
ObjectInputStream把对象反序列化方法:
-
readObject() 方法用于从流读取对象应该使用 Java 的安全强制转 换来获取所需的类型
-
Serializable接口
-
ObjectOutputStream在对对象进行序列化时有一个要求,就是需要序列化的对象 所属的类必须实现Serializable接口。实现该接口不需要重写任何方法。其只是作为可 序列化的标志。实现该接口的类需要提供一个常量serialVersionUID,表明该类的版本 不指定的话,系统根据类的结构自定义值,如果结构改变,这个反序列化就会失败,如果指定了值得,结构改变也能成功(可默认,跨平台最好定义)
-
transient关键字:对象进行序列化时可以忽略某些不必要的属性7的值(只能修饰变量,不能修饰方法和类)比如:private transient int a = 7;
-
PrintWriter类
是具有自动行刷新的缓冲字符输出流。为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式,println和print方法
构造方法:
-
处理文件流,第二个参数可以指定字符集:
- 处理其他流:字节流和字符流,第二个参数传入一个boolean autoFlush,说明是否支持自动行刷新。(默认为false)
10.内存操作流
ByteArrayInputStream ByteArrayOutputStream ,把数据读写到内存中。