Java第四天

一、I/O流的概述和分类

(一)为什么学习IO流

集合存储数据只能在内存中存储数据,不能永久的存储,会导致数据的丢失,我们急需技术可以可以将数据永久存储,所以便产生了IO流技术。

(二)IO流用来处理设备直接按的数据传输

1.可以把数据存储在文件,也可以从文件中读取数据

2.常见应用:文件复制、上传文件、下载文件

(三)IO流分类 ctl + shift + o 可以导包

1.输出流 FileWriter

(1) java.io

(2) 用来写入字符文件的便捷类;

【1】FileWriter(String fileName):传递一个文件名称

【2】成员方法

--void writer(String str)

--void flush()

--void close()

(3)输出流写数据的步骤(IO流必须抛出IO异常)

【1】  创建输出流对象----调用系统资源创建一个文件,创建输出流对象,把输出流对象指向文件

    FileWriter fw = new FileWriter("d:\\a.txt");

  【2】创建输出流对象的写数据的方法

fw.writer()

//硬盘存储数据的基本单位是字节,存储字符串为很多字节,数据没有直接写到文件,其实是写到了内存缓冲区

fw.flush();

//刷新内存缓冲区,将数据写入文件

  【3】释放资源

fw.close();

//通知系统释放和该文件相关的资源,close在关闭相关资源的时候,也会访问内存缓冲区,并刷新它,如果写入的数据较少时,可以不用使用fw.flush()

(4)如何实现数据的换行

\n可以实现换行,但是在windows系统的记事本中并没有换行的原因是windows识别的换行不是\n,而是\r\n

windows:\r\n

linux:\n

mac:\r

(5)如何实现数据的追加写入

FileWriter fw = FileWriter("c.text",true)

//是否追加写入数据

2.输入流 FileReader

(1)java.io

(2) 用来读取字符数据的便捷类

【1】构造方法

FileReader(String fileName):传递文件名称


【2】成员方法

(3)输入流读文件的步骤:

【1】创建输入流对象

FileReader fr = new FileReader("fr.txt");

【2】调用输入流对象的读数据方法

----int read():

//一次读取一个字符,返回字符的对应的int值

while(ch= fr.read(ch)==-1){//文件读取完

System.out.print((char)ch);

}

----int read(char[] cbuf)

//一次读取一个字符数组的数据返回的是实际读取的字符个数

char[] chs = new char[1024]

// 这里可以是1024的整数倍,因为KB、MB

进制是1024。

if(len == fr.read(chs) != -1){

  System.out.print(new String(chs,0,len));

}

【3】释放资源

fr.close()

(三)字符缓冲流

1.BufferedWriter基本用法

(1)java.io

(2)将文本写入字符输出流,缓冲各个字符,从而提供耽搁字符、数组和字符串的高效写入。

BufferdWriter bw = new BufferdWriter(new FileWriter("bw.txt"));

bw.write("HELLO");

bw.flush();

bw.close();

(3)

2.BufferdReader基本用法

(1)java.io

(2) 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

BufferdReader br = new BufferdReader(new FileReader("bw.txt"));

int ch;

while((ch = br.read()) != -1){

  System.out.print((char)ch);

}

char[] chs = new char[1024];

int len;

while(len = br.read(chs)!=-1){

  System.out.print(new String(chs,0,len));

}

br.close();

(3)缓冲流的特殊功能

BufferdWriter

  void newLine():写一个换行符,这个换行符由系统决定

BufferdReader

  String readLine():一次读取一行数据,但是不读取换行符

while(line = br.readLine()!=null){

    System.out.println(line);

}

(4)

你可能感兴趣的:(Java第四天)