一.IO流概述
1.IO流是用来在设备之间的数据传输。
2.Java中对数据的操作是按流的方式进行的。
3.分类:
1)按操作的数据:字节流(早期就有,可传送任何数据)和字符流(ASCII码表,Unicode码表<两字节>)。
2)按流向:输入流和输出流。
4.抽象基类
1)字节流:InputStream,OutputStream
2)字符流:Reader,Writer
二.IO流实例
1.FileWriter类实例
复制代码
1 //新建一个Filewriterdemo类
2 import java.io.*;
3
4 public class FilewriterDemo {
5
6 public static void main(String []args) throws IOException{
7 //新建一个FileWriter类,新建了一个文件text.txt
8 FileWriter fw=new FileWriter("test.txt");
9 //向内存中写入数据,仅写在了内存中
10 fw.write("abcde");
11 //刷新数据,将数据写入文件中
12 fw.flush();
13 //可以无限写入
14 fw.write("haha");
15
16 fw.flush();
17 //刷新在关闭
18 fw.close();
19 }
20 }
复制代码
运行结果
2.IO异常
复制代码
1 //新建一个Filewriterdemo类
2 import java.io.*;
3
4 public class FilewriterDemo {
5
6 public static void main(String []args) {
7 //在try外定义类
8 FileWriter fw=null;
9
10 try{
11 //初始化
12 fw=new FileWriter("test.txt");
13
14 fw.write("abcde");
15 }
16
17 catch(IOException e){
18
19 System.out.println(e.toString());
20 }
21 //在处理异常时尽量将关闭的数据流放入finally
22 finally{
23
24 try {
25 //如果有多个,则要使用多个判断,且不可放在一个中,如:
26 //if(fw!==null&&fw==“”)等
27 if(fw!=null)
28
29 fw.close();
30
31 } catch (IOException e) {
32
33 System.out.println(e.toString());
34 }
35 }
36 }
37 }
复制代码
3 FileRead类实例
3.1一次一个字符读
复制代码
1 import java.io.*;
2 public class FileRead {
3
4 public static void main(String[] args) throws IOException{
5 //新建一个FileReader类
6 FileReader fd=new FileReader("test.txt");
7 //当从一个文件中读取数据时,在数据最后会返回一个int型-1来表示结束
8 int ch=0;
9 while((ch=fd.read())!=-1){
10 System.out.println("ch="+(char)ch);
11 }
12 /*
13 while(true){
14 int ch=fd.read();
15 //当ch=-1时推出循环
16 if(ch==-1)
17 break;
18 //输出读到的数据并 强制转化为char类型
19 System.out.println("ch="+(char)ch);
20 }
21 */
22 //关闭数据流
23 fd.close();
24
25 }
26
27 }
复制代码
3.2从数组中读
复制代码
1 import java.io.*;
2
3 public class FileReadStr {
4
5 public static void main(String[] args) throws IOException{
6
7 FileReader fd=new FileReader("test.txt");
8 //在用数组读数据时,一般将数组定义为1024倍数
9 char []buf=new char[1024];
10 int num=0;
11 while((num=fd.read(buf))!=-1){
12 //从数组的第一个开始到最后一个结束
13 System.out.println(new String(buf,0,num));
14 }
15
16 fd.close();
17 }
18
19 }
复制代码
运行结果
1.IO流是用来在设备之间的数据传输。
2.Java中对数据的操作是按流的方式进行的。
3.分类:
1)按操作的数据:字节流(早期就有,可传送任何数据)和字符流(ASCII码表,Unicode码表<两字节>)。
2)按流向:输入流和输出流。
4.抽象基类
1)字节流:InputStream,OutputStream
2)字符流:Reader,Writer
二.IO流实例
1.FileWriter类实例
复制代码
1 //新建一个Filewriterdemo类
2 import java.io.*;
3
4 public class FilewriterDemo {
5
6 public static void main(String []args) throws IOException{
7 //新建一个FileWriter类,新建了一个文件text.txt
8 FileWriter fw=new FileWriter("test.txt");
9 //向内存中写入数据,仅写在了内存中
10 fw.write("abcde");
11 //刷新数据,将数据写入文件中
12 fw.flush();
13 //可以无限写入
14 fw.write("haha");
15
16 fw.flush();
17 //刷新在关闭
18 fw.close();
19 }
20 }
复制代码
运行结果
2.IO异常
复制代码
1 //新建一个Filewriterdemo类
2 import java.io.*;
3
4 public class FilewriterDemo {
5
6 public static void main(String []args) {
7 //在try外定义类
8 FileWriter fw=null;
9
10 try{
11 //初始化
12 fw=new FileWriter("test.txt");
13
14 fw.write("abcde");
15 }
16
17 catch(IOException e){
18
19 System.out.println(e.toString());
20 }
21 //在处理异常时尽量将关闭的数据流放入finally
22 finally{
23
24 try {
25 //如果有多个,则要使用多个判断,且不可放在一个中,如:
26 //if(fw!==null&&fw==“”)等
27 if(fw!=null)
28
29 fw.close();
30
31 } catch (IOException e) {
32
33 System.out.println(e.toString());
34 }
35 }
36 }
37 }
复制代码
3 FileRead类实例
3.1一次一个字符读
复制代码
1 import java.io.*;
2 public class FileRead {
3
4 public static void main(String[] args) throws IOException{
5 //新建一个FileReader类
6 FileReader fd=new FileReader("test.txt");
7 //当从一个文件中读取数据时,在数据最后会返回一个int型-1来表示结束
8 int ch=0;
9 while((ch=fd.read())!=-1){
10 System.out.println("ch="+(char)ch);
11 }
12 /*
13 while(true){
14 int ch=fd.read();
15 //当ch=-1时推出循环
16 if(ch==-1)
17 break;
18 //输出读到的数据并 强制转化为char类型
19 System.out.println("ch="+(char)ch);
20 }
21 */
22 //关闭数据流
23 fd.close();
24
25 }
26
27 }
复制代码
3.2从数组中读
复制代码
1 import java.io.*;
2
3 public class FileReadStr {
4
5 public static void main(String[] args) throws IOException{
6
7 FileReader fd=new FileReader("test.txt");
8 //在用数组读数据时,一般将数组定义为1024倍数
9 char []buf=new char[1024];
10 int num=0;
11 while((num=fd.read(buf))!=-1){
12 //从数组的第一个开始到最后一个结束
13 System.out.println(new String(buf,0,num));
14 }
15
16 fd.close();
17 }
18
19 }
复制代码
运行结果