Java中IO流

Java中IO流,第1张

File类

File类是java.io包中很重要的一个类;

File类的对象可以表示文件,还可以表示目录,在File类对象可以代替一个文件或目录.

File对象可以对文件或目录的属性进行 *** 作,例:文件名,最后修改日期,文件大小等.

File对象无法 *** 作文件的具体数据.即不能直接对文件进行读/写 *** 作.

File类的构造方法:

File(String pathname);指定文件或目录名和路径创建文件对象.

1.在当前目录下创建一个与java.txt文件名相关联的文件对象.

File f1=new Flie("java.txt");

2.指明详细路径以及文件名,请注意双斜杠或用反斜杠.

File f2=new File("E:/java/hello.java");

3.指明详细的路径以及目录名,请注意双斜杠.

File f3=new File("E:\\java");

File类中的常用方法:

boolean exists();判断文件是否存在,存在返回true,否则false;

boolean isFile();判断是否为文件,是返回true,否则false;

boolean isDirectory();判断是否为目录,是返回true,否则false;

String getName();获得文件的名称;

long length();获得文件的长度(字节数);

boolean createNewFile() throws IOException;创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉;

boolean delete();删除文件,成功返回true,否则返回false;

public String[] list()'将目录下的子目录以及文件的名字,返回到String数组中.

public File[] listFiles();将目录下的子目录及文件的实例返回到File数组中

输入输出(I/O)

把电脑硬盘上的数据读到程序中,称为输入,即input,进行数据的read *** 作,

从程序往外部设备写数据,称为输出,即Output,进行数据的write *** 作.

流的类型
  1. 从数据流编码格式上划分为

(1)字节流

字节输入流FileInputStream

字节输出流FIleOutputStream

(2)字符流

字符输入流FileReader

字符输出流FileWrite

InputStream和OutputStream的子类都是字节流.可以读写二进制文件,主要处理音频,图片,歌曲,字节流,处理单元为一个字节.

Reader和Write的子类都是字符流.主要处理字符或字符串,字符流处理单元为一个字符,

字节流将读取到的字节数据,去指定的编码表中获取对应文字.

  1. 按着数据的传输方向分为

(1)输入流:往程序中读叫输入流

InputStream的基本方法:

读取一个字节并以整数的形式返回(0~255),如果返回-1已经到输入流的末尾.

int read() throws IOException

读取一系列字节并存储到一个数组buffer

返回实际读取到的字节数,如果读取前已到输入流的末尾返回-1.

int read(byte[] buffer) throws IOException

关闭流释放内存资源

void close() throws IOException

(2)输出流:从程序中往外写叫输出流

OutputStream的基本方法

向输出流中写入一个字节数据,该字节数据为参数b的低八位.

void write(int b) throws IOException

将一个字节类型的数组中的从指定位置(off)开始的len个字节写入到输出流

void write(int b) throws IOException

关闭流释放内存资源

void close() throws IOException

  1. 根据封装类型不同流又分为

(1)节点流

如果流封装的是某种特定的数据源,如文件,字符串,字符串数组等则称为节点流

节点流中常用类:

字节输入流FileInputStream

字节输出流FileOutputStream

字符出入流FileReader

字符输出流FileWriter

(2)处理流

如果流封装的是其他流对象,称为处理流,处理流提供了缓冲功能,提高了读写效率,同时增加了一些新的方法.

缓冲字节输出流BufferedOutputStream

缓冲字节输入流BufferedInputStream

缓冲字符输入流BufferedReader

缓冲字符输出流BufferedWriter

输入输出字符流

Reader的基本方法

读取一个字符并以整数的形式返回,

如果返回-1已到输入流的末尾

int read() throws IOException

读取一系列字符并存储到一个数组buffer,

返回实际读取到的字符数,如果读取前已到输出流的末尾返回-1

int read(char[] cbuf) throws IOException

关闭

void close() throws IOException

Writer的基本方法

向输出流中写入一个字符数据,该字节数据为参数b的16位.

void write(int c) throws IOException

一个字符类型的数组中的数据写入输出流.

void write(char[] cbuf) throws IOException.

将一个字符类型的数组中的从指定位置(offset)开始的length个字符写入到输出流.

void write(char[] cbuf,int offset,int length)throws IOException

关闭

void close() throws IOException

Print流

print 打印流:只做输出没有输入,打印流分为字节打印流和字符打印流.

PrintWriter:字符打印流,

对象输入输出流:主要的作用是用于写入对象信息与读取对象信息。对向信息一旦写到文件上那么对象的信息就可以做到持久化。

对象的输出流:ObjiectOutputStream

对象的输入流:ObjectInputStream

要将序列化之后的对象保存下来,需要通过对象输出流将对象状态保存,之后在通过对象输入流将对象装填恢复。

在ObjectInputStream中用readObject()方法可以直接读取一个对象,ObjectOutputStream中用writeObject()可以直接将对象保存到输出流中.

对象序列化,反序列化

对象的寿命通常随着生成该对象的程序的终止而终止.有时候,需要将对象的状态保存下来,在需要时再将对象恢复.

对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过程,对象的输入流将指定序列化好的文件读出的过程就是对象反序列化的过程.既然对象的输出流将对象写入到文件中称之为对象的序列化,所以必须要实现Serializable接口.

Serializable接口中没有任何方法,当一个类声明实现Serializable接口后,表明该类可以被序列化.

在类中生成一个编号

private static final long serialVersionUID=-5974713180104013488L;随机生成的,唯一的

serialVersionUID用来表明实现序列化类的不同版本间的兼容性.某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化.

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/922990.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存