标签:
黑马程序员------IO(一)
1.1 IO(Input Output)流概述:
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流与字符流。
流按流向分为:输入流,输出流。
将外设中的数据读取到内存中:输入。
将内存的数写入到外设中:输出。
1.2 IO中的字符流和字节流:
字节流两个基类:
InputStream OutputStream
字符流两个基类:
Reader Writer
P.S.
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
需求:在硬盘上,创建一个文件并写入一些文字数据(示例1)。
1 示例1:
2 import java.io.*;
3 class FileWriterDemo
4 {
5 public static void main(String[] args) throws IOException
6 {
7 //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
8 //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
9 //其实该步就是在明确数据要存放的目的地。
10 FileWriter fw = new FileWriter("demo.txt");
11
12 //调用write方法,将字符串写入到流中。
13 fw.write("abcde");
14
15 //刷新流对象中的缓冲中的数据。
16 //将数据刷到目的地中。
17 //fw.flush();
18
19
20 //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
21 //将数据刷到目的地中。
22 //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
23 fw.close();
24 }
25 }
PS:1. close方法只能用一次。
2. 流关闭以后不能,不能再调用write方法,否则会报如下异常错误:
3.如果构造函数中加入true,可以实现对文件进行续写(示例2)
1 示例2:
2 import java.io.*;
3 class FileWriterDemo3
4 {
5 public static void main(String[] args) throws IOException
6 {
7
8 //传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。
9 FileWriter fw = new FileWriter("demo.txt",true);根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。为 true,则将数据写入文件末尾处,而不是写入文件开始处
10
11 fw.write("nihao\r\nxiexie");//\r\n表示换行
12
13 fw.close();
14 }
15 }
1.3 IO异常的处理方式(示例3):为防止代码异常导致流无法关闭,因此在finally中对流进行关闭
1 示例3
2 import java.io.*;
3
4 class FileWriterDemo2
5 {
6 public static void main(String[] args)
7 {
8 FileWriter fw = null;//在外面建立引用
9 try
10 {
11 fw = new FileWriter("demo.txt");//在里面进行初始化
12 fw.write("abcdefg");
13
14 }
15 catch (IOException e)
16 {
17 System.out.println("catch:"+e.toString());
18 }
19 finally
20 {
21 try
22 {
23 if(fw!=null)
24 fw.close();
25 }
26 catch (IOException e)
27 {
28 System.out.println(e.toString());
29 }
30
31 }
32
33 }
34 }
需求:读取一个文文件,将读取到的字符打印到控制台。(使用FileReader)
第一种读取方式:使用read()方法读取文本文件数据(示例4)
1 示例4:
2
3 class FileReaderDemo
4 {
5 public static void main(String[] args) throws IOException
6 {
7 //创建一个文件读取流对象,和指定名称的文件相关联。
8 //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
9 FileReader fr = new FileReader("demo.txt");
10
11 //调用读取流对象的read方法。
12 //read():一次读一个字符。而且会自动往下读。
13
14 int ch = 0;
15
16 while((ch=fr.read())!=-1)
17 {
18 System.out.println((char)ch);
19 }
20
21
22 /*
23 while(true)
24 {
25 int ch = fr.read();
26 if(ch==-1)
27 break;
28 System.out.println("ch="+(char)ch);
29 }
30 */
31
32
33
34 fr.close();
35
36
37 }
38 }
第二种读取方式:使用read(char[])方法读取文本文件数据(示例5)。
1 示例5
2
3
4 import java.io.*;
5
6 class FileReaderDemo2
7 {
8 public static void main(String[] args) throws IOException
9 {
10 FileReader fr = new FileReader("demo.txt");
11
12
13 //定义一个字符数组。用于存储读到字符。
14 //该read(char[])返回的是读到字符个数。
15 char[] buf = new char[1024];
16
17 int num = 0;
18 while((num=fr.read(buf))!=-1)
19 {
20 System.out.println(new String(buf,0,num));
21 }
22
23
24 fr.close();
25 }
26 }
标签:
原文地址:http://www.cnblogs.com/jiandonn/p/4578600.html