Java学习——IO流
IO流是用来处理设备之间的数据传输的。
Java对数据的操作是通过流方式。
Java用于操作流的对象都在IO包中。
流按操作数据分为两种;即:字节流和字符流。
流按照流向分为:输入流和输出流。
IO流常用类:
|——字节流的抽象基类:
|—— InputStream
|—— FileInputStream:字节输入流
|—— OutputStream
|—— FileOutputStream:字节输出流
|——字符流的抽象基类:
|—— Reader
|—— FileReader:字符输入流
|—— Writer
|—— FileWriter:字符输出流
FileWriter:
当创建一个写入流对象时,就必须要明确被操作的文件,而且该文件会被创建到指定目录下,如果该目录下已有同名文件,那么该同名文件将被覆盖。
例如:FileWriter fw = new FileWriter(“demo.txt”);
write();方法,可以将字符串或字符写入到写输出流中。
flush();方法,刷新该流的缓冲区,将数据刷新到输出流中。
close();方法,关闭流,但在关闭流前会先刷新一次流。
flush和close的区别:flush在刷新后,流可以继续使用。Close在刷新后,流会被关闭。
注:在异常处理时,close一般都要放在finally中,因为资源必须被关闭。
FileReader:
当创建一个读取流对象时,就必须让该读取流和指定名称的文件相关联,同时要保证该文件是已经存在的,如果该相关联文件不存在,则会发生异常:FileNotFoundException。
例如:FileReader fr = new FileReader(“demo.txt”);
//当FileReader对象创建好了后,这时就用读取流的对象调用read()方法,将文件内容读取到读取流中。
read();//读取单个字符,如果读取完了,就返回-1。
read(Char[] cbuf); //将字符读入数组中,如果读取完了,就返回-1。
close();//关闭流。
Buffered:字符流的缓冲区
字符流缓冲区的出现提高了对数据的读写效率。
对应的类:BufferedWriter:字符写入流缓冲区。
BufferedReader:字符读取流缓冲区。
BufferedInputStream:字节读取流缓冲区。
BufferedOutputStream:字节写入流缓冲区。
BufferedReader中提供了一个一次读取一行文本的方法,即:readLine()方法。该方法一次可以读取文件中一行的文本内容,从而提高了文本数据获取的效率,当文件读完时,就会返回null,表示读到了文件末尾。
注:readLine()方法返回的时候只返回“回车符之前的数据”,并不会返回回车符。
BufferedWriter中提供了一个跨平台的换行符,即:newLine()方法。该方法写入的换行符,可以在多个平台使用。
注:缓冲区要结合流才可以使用,它在流的基础上对流的功能进行了增强;缓冲区的出现是为了提高流的操作效率而出现的,所以在创建缓冲区之前,必须要先有流对象。
转换流:
InputStreamReader:字节流转换成字符流。
OutputStreamWriter:字符流转换成字节流。
注:InputStreamReader:接收的是字节读取流对象。如:FileReader。
OutputStreamWriter:接收的是字符写入流对象。如:FileWriter。
读取键盘录入:
System.in :对应的是标准输入设备,即:键盘录入。
System.Out :对应的是标准输出设备,即:控制台或显视器。
File类:是文件和目录路径名的抽象表现形式,File类用来将文件或者文件夹封装成对象,方便对文件与文件夹进行操作。
File类对象可以作为参数传递给流的构造函数。
例如:File f1 = new File(“demo.txt”);
把文件和文件夹封装成File对象后,在流中使用时,可以对文件和文件夹进行判断,比如判断是否存在,是否是文件或文件夹,或都获取文件名或文件的绝对路径等。
File在创建文件时,如果该文件已经存在,则不创建,并返回false;它和输出流不一样,输出流对象一建立就会创建文件,而且不管文件是否已存在,如果文件已存在,输出流会直接覆盖原文件创建新文件。
打印流:该流提供了打印方法,可以将各种数据类型的数据都原样打印。
字节打印流:printStream
构造函数可以接收的参数类型:
file对象;File
字符串路径;String
字节输出流;OutputStream
字符打印流:printWriter
构造函数可以接收的参数类型:
file对象;File
字符串路径;String
字节输出流;OutputStream
字符输出流;Writer