黑马程序员-IO流操作规则
2014-04-10 22:19
309 查看
Java类库中的I/O类库分成输入和输出两部分,可以在JDK文档里的类层次结构中查看到。通过继承,任何自InputStream或Reader派生来的类都包含有名为read()的基本方法,用于读取单个字节或字节数组。同样,任何自OutputStream或Writer派生来的类都包含有名为write()的基本方法,用于写单个字节或者字节数组。
但是,在实际操作中,最让我们迷惑和头疼的事情就是,流对象有很多,但是我们却不知道该用哪一个来操作。因此,在这里总结出来一些相关的操作规则,按照这些规则操作,可以更加方便准确地选择流对象。
这些操作规则,总结为三个步骤,即:
1、明确源和目的;
所谓源,是指输入流,在这里也就是InputStream 和Reader;目的是指输出流:OutputStream和Writer
2、判断操作的数据是否是纯文本;
如果操作的数据时纯文本,那么就要使用字符流,如果不是,则使用字节流
3、明确要使用哪个具体的对象
要确定使用哪个具体的对象,还要通过设备来区分,这里的设备也分为源设备和目的设备。源设备有内存、硬盘和键盘;而母的设备有内存、硬盘和控制台。
通过前两个步骤,就可以判断出操作体系,根据所得出的操作体系,再加上第三步,就可以轻松的确定使用哪个具体的对象了。下面以两个具体的实例来说明问题:
1、需求:将一个文本文件中的数据存储到另一个 文件中(复制文件)
[html]view
plaincopyprint?
1. package io;
2. /*
3. * 需求:将一个文件中的数据存储到另一个文件中(复制文件)
4. * */
5. import java.io.*;
6. public class CopyDemo {
7. public static void main(String[] args) throws IOException{
8. /**因为是源,所以使用读取流InputStream或者是Reader
9. 又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
10. 明确设备的时候,因为要存储文件,所以设备是硬盘上的一个文件,而Reader中可以操作文件的对象是
11. FileReader
12. */
13. FileReader fr = new FileReader("a.txt");
14. //为了提高效率,加入Reader体系中的缓冲区BufferedReader
15. BufferedReader bufr = new BufferedReader(fr);
16. /**
17. * 判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
18. * 判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
19. * 为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
20. * */
21. FileWriter fw = new FileWriter("b.txt");
22. //为了提高效率,加入Writer体系中的缓冲区BufferedWriter
23. BufferedWriter bufw = new BufferedWriter(fw);
24. //接下来便是文件复制的操作
25. String line = null;
26. while((line = bufr.readLine()) != null){
27. bufw.write(line);
28. bufw.newLine();
29. bufw.flush();
30. }
31. bufr.close();
32. bufw.close();
33. }
34.}
package io;
/*
*需求:将一个文件中的数据存储到另一个文件中(复制文件)
* */
import java.io.*;
public class CopyDemo {
public static void main(String[]args) throws IOException{
/**因为是源,所以使用读取流InputStream或者是Reader
又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
明确设备的时候,因为要存储文件,所以设备是硬盘上的一个文件,而Reader中可以操作文件的对象是
FileReader
*/
FileReader fr = newFileReader("a.txt");
//为了提高效率,加入Reader体系中的缓冲区BufferedReader
BufferedReader bufr = newBufferedReader(fr);
/**
*
判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
*
判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
*
为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
* */
FileWriter fw = newFileWriter("b.txt");
//为了提高效率,加入Writer体系中的缓冲区BufferedWriter
BufferedWriter bufw = newBufferedWriter(fw);
//接下来便是文件复制的操作
String line = null;
while((line= bufr.readLine()) != null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
2、需求:将键盘录入的数据保存到一个文件中
[java]view
plaincopyprint?
1. package io;
2. /*
3. * 需求:将键盘录入的数据保存到一个文件中
4. * */
5. import java.io.*;
6. public class KeyCode {
7. public static void main(String[] args) throws IOException{
8. /**因为是源,所以使用读取流InputStream或者是Reader
9. 又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
10. 明确设备的时候,因为要从键盘录入数据,所以设备就是键盘,对应的对象就是System.in
11. 为了操作键盘的文本数据方便,构成字符流按照字符串是最方便的,所以既然明确了Reader,
12. 那么就将System.in转换成Reader,用到了Reader中的InputStreamReader
13. **/
14. InputStreamReader isr = new InputStreamReader(System.in);
15. //为了提高效率,加入reader体系中的缓冲区BufferedReader
16. BufferedReader bufr = new BufferedReader(isr);
17. /**
18. * 判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
19. * 判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
20. * 为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
21. * */
22. FileWriter fw = new FileWriter("c.txt");
23. //为了提高效率,加入Writer体系中的缓冲区Buff
24. BufferedWriter bufw = new BufferedWriter(fw);
25. //接下来便是文件复制的操作
26. String line = null;
27. while((line = bufr.readLine()) != null){
28. bufw.write(line.toUpperCase());
29. bufw.newLine();
30. bufw.flush();
31. }
32. bufr.close();
33. bufw.close();
34. }
35.}
package io;
/*
*需求:将键盘录入的数据保存到一个文件中
* */
import java.io.*;
public class KeyCode {
public static void main(String[]args) throws IOException{
/**因为是源,所以使用读取流InputStream或者是Reader
又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
明确设备的时候,因为要从键盘录入数据,所以设备就是键盘,对应的对象就是System.in
为了操作键盘的文本数据方便,构成字符流按照字符串是最方便的,所以既然明确了Reader,
那么就将System.in转换成Reader,用到了Reader中的InputStreamReader
**/
InputStreamReader isr = newInputStreamReader(System.in);
//为了提高效率,加入reader体系中的缓冲区BufferedReader
BufferedReader bufr = newBufferedReader(isr);
/**
*
判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
*
判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
*
为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
* */
FileWriter fw = newFileWriter("c.txt");
//为了提高效率,加入Writer体系中的缓冲区Buff
BufferedWriter bufw = newBufferedWriter(fw);
//接下来便是文件复制的操作
String line = null;
while((line = bufr.readLine())!= null){
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
Java类库中的I/O类库分成输入和输出两部分,可以在JDK文档里的类层次结构中查看到。通过继承,任何自InputStream或Reader派生来的类都包含有名为read()的基本方法,用于读取单个字节或字节数组。同样,任何自OutputStream或Writer派生来的类都包含有名为write()的基本方法,用于写单个字节或者字节数组。
但是,在实际操作中,最让我们迷惑和头疼的事情就是,流对象有很多,但是我们却不知道该用哪一个来操作。因此,在这里总结出来一些相关的操作规则,按照这些规则操作,可以更加方便准确地选择流对象。
这些操作规则,总结为三个步骤,即:
1、明确源和目的;
所谓源,是指输入流,在这里也就是InputStream 和Reader;目的是指输出流:OutputStream和Writer
2、判断操作的数据是否是纯文本;
如果操作的数据时纯文本,那么就要使用字符流,如果不是,则使用字节流
3、明确要使用哪个具体的对象
要确定使用哪个具体的对象,还要通过设备来区分,这里的设备也分为源设备和目的设备。源设备有内存、硬盘和键盘;而母的设备有内存、硬盘和控制台。
通过前两个步骤,就可以判断出操作体系,根据所得出的操作体系,再加上第三步,就可以轻松的确定使用哪个具体的对象了。下面以两个具体的实例来说明问题:
1、需求:将一个文本文件中的数据存储到另一个 文件中(复制文件)
[html]view
plaincopyprint?
1. package io;
2. /*
3. * 需求:将一个文件中的数据存储到另一个文件中(复制文件)
4. * */
5. import java.io.*;
6. public class CopyDemo {
7. public static void main(String[] args) throws IOException{
8. /**因为是源,所以使用读取流InputStream或者是Reader
9. 又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
10. 明确设备的时候,因为要存储文件,所以设备是硬盘上的一个文件,而Reader中可以操作文件的对象是
11. FileReader
12. */
13. FileReader fr = new FileReader("a.txt");
14. //为了提高效率,加入Reader体系中的缓冲区BufferedReader
15. BufferedReader bufr = new BufferedReader(fr);
16. /**
17. * 判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
18. * 判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
19. * 为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
20. * */
21. FileWriter fw = new FileWriter("b.txt");
22. //为了提高效率,加入Writer体系中的缓冲区BufferedWriter
23. BufferedWriter bufw = new BufferedWriter(fw);
24. //接下来便是文件复制的操作
25. String line = null;
26. while((line = bufr.readLine()) != null){
27. bufw.write(line);
28. bufw.newLine();
29. bufw.flush();
30. }
31. bufr.close();
32. bufw.close();
33. }
34.}
package io;
/*
*需求:将一个文件中的数据存储到另一个文件中(复制文件)
* */
import java.io.*;
public class CopyDemo {
public static void main(String[]args) throws IOException{
/**因为是源,所以使用读取流InputStream或者是Reader
又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
明确设备的时候,因为要存储文件,所以设备是硬盘上的一个文件,而Reader中可以操作文件的对象是
FileReader
*/
FileReader fr = newFileReader("a.txt");
//为了提高效率,加入Reader体系中的缓冲区BufferedReader
BufferedReader bufr = newBufferedReader(fr);
/**
*
判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
*
判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
*
为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
* */
FileWriter fw = newFileWriter("b.txt");
//为了提高效率,加入Writer体系中的缓冲区BufferedWriter
BufferedWriter bufw = newBufferedWriter(fw);
//接下来便是文件复制的操作
String line = null;
while((line= bufr.readLine()) != null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
2、需求:将键盘录入的数据保存到一个文件中
[java]view
plaincopyprint?
1. package io;
2. /*
3. * 需求:将键盘录入的数据保存到一个文件中
4. * */
5. import java.io.*;
6. public class KeyCode {
7. public static void main(String[] args) throws IOException{
8. /**因为是源,所以使用读取流InputStream或者是Reader
9. 又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
10. 明确设备的时候,因为要从键盘录入数据,所以设备就是键盘,对应的对象就是System.in
11. 为了操作键盘的文本数据方便,构成字符流按照字符串是最方便的,所以既然明确了Reader,
12. 那么就将System.in转换成Reader,用到了Reader中的InputStreamReader
13. **/
14. InputStreamReader isr = new InputStreamReader(System.in);
15. //为了提高效率,加入reader体系中的缓冲区BufferedReader
16. BufferedReader bufr = new BufferedReader(isr);
17. /**
18. * 判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
19. * 判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
20. * 为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
21. * */
22. FileWriter fw = new FileWriter("c.txt");
23. //为了提高效率,加入Writer体系中的缓冲区Buff
24. BufferedWriter bufw = new BufferedWriter(fw);
25. //接下来便是文件复制的操作
26. String line = null;
27. while((line = bufr.readLine()) != null){
28. bufw.write(line.toUpperCase());
29. bufw.newLine();
30. bufw.flush();
31. }
32. bufr.close();
33. bufw.close();
34. }
35.}
package io;
/*
*需求:将键盘录入的数据保存到一个文件中
* */
import java.io.*;
public class KeyCode {
public static void main(String[]args) throws IOException{
/**因为是源,所以使用读取流InputStream或者是Reader
又因为是文本文件,所以选择Reader,这样体系就明确了,接下来明确使用该体系中的哪个对象
明确设备的时候,因为要从键盘录入数据,所以设备就是键盘,对应的对象就是System.in
为了操作键盘的文本数据方便,构成字符流按照字符串是最方便的,所以既然明确了Reader,
那么就将System.in转换成Reader,用到了Reader中的InputStreamReader
**/
InputStreamReader isr = newInputStreamReader(System.in);
//为了提高效率,加入reader体系中的缓冲区BufferedReader
BufferedReader bufr = newBufferedReader(isr);
/**
*
判断目的,要使用输出流OutputStream或者是Writer,因为是文本文件,所以确定使用Writer
*
判断设备的时候也是硬盘上的一个文件,Writer体系中国可以操作文件对象的是FileWriter
*
为了提高效率,同样加入Writer体系中的缓冲区BufferedWriter
* */
FileWriter fw = newFileWriter("c.txt");
//为了提高效率,加入Writer体系中的缓冲区Buff
BufferedWriter bufw = newBufferedWriter(fw);
//接下来便是文件复制的操作
String line = null;
while((line = bufr.readLine())!= null){
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
相关文章推荐
- 黑马程序员_Java基础_IO流(File类和properties类相关操作)
- 黑马程序员_IO流3_(File操作,Properties,PrintWrite,合并流)
- 黑马程序员_Java基础_IO流(字符流缓冲区和字节流相关操作以及相关操作技巧)
- 黑马程序员_Java基础_IO流(File类和properties类相关操作)
- 黑马程序员—异常+IO流File类+Properties+PrinWriter+合并流+切割文件+对象序列化+管道流+RandomAccessFile+操作基本数据类型的DataStre
- 黑马程序员_温习 IO流三 (个人笔记)摘要(IO流操作规律--File类---递归----Propertise(集合)
- 黑马程序员_java中IO流的操作规律
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- “黑马程序员” IO流 2 File操作
- 黑马程序员_IO流——操作基本数据类型的流对象DataStream
- 黑马程序员----IO流以及文件的操作
- 黑马程序员_IO流的操作_1
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员————IO流操作的基本规律和使用方法
- 黑马程序员——IO流的常用基本操作
- 黑马程序员-java中IO流的操作总结2
- 黑马程序员-JAVA基础-IO流之流操作规律及读写转换流
- IO流的基本操作思路----黑马程序员
- 黑马程序员——>第十九天<io流(BufferedWriter-装饰设计模式-流操作规律)>
- 黑马程序员------学习笔记(4)IO流中字符流操作