Java IO学习札记(IO流操作小技巧)

原创 2013年04月24日 23:38:03

接着上一篇写,一些补充。
其实毕老师的对字符流和字节流的使用分类总结还是很经典的,让你在不知道未使用什么流而抓耳挠腮时,有种豁然开朗的感觉。毕老师讲到:

流操作的基本规律:
最痛苦的就是流对象有很多,不知道该用哪一个。
通过仨个明确来完成。
1、明确源和目的。
源:输入流。InputStream Reader
目的:输出流。OutputStream Writer
2、操作的数据是否是纯文本。
是:字符流。Reader Writer
不是:字节流。InputStream OutputStream 

3、当体系明确后,在明确要使用那个具体的对象。
通过设备来进行区分:
源设备:内存、键盘、硬盘。
目的设备:内存、硬盘、控制台。

1、将一个文本文件中的数据存储到另一个文件中,复制文件。
源:因为是源,所以使用读取流InputSteam Reader
是不是操作文本文件。
是!这是就可以选择Reader
这样系统就明确了。

接下来明确钥匙该体系中的那个对象
明确设备:硬盘上的一个文件。
Reader体系中可以操作文件的对象是FileReader

是否需要提高效率:是!加入Reader体系中的缓冲区 BufferedReader

FileReader fr = new FileReader("a.txt");
BufferedReader br = new BufferedReader(fr);
目的:OutputStream Writer
目的是否是纯文本的?
是!Writer。
明确设备:
设备:硬盘,一个文件。
Writer体系中可以操作文件的对象FileWriter。
是否需要提高效率:是!加入Writer体系中的缓冲区 BufferedWriter
FileWriter fw = new FileWriter("b.txt");
BufferedWriter bw = new BufferedWriter(fw);

练习:将一个图片文件中的数据存储到另一个文件中,复制文件。按照以上格式自己完成三个明确(和上一篇中拷贝一个mp3文件是一样的)
------------------------------------------------------------------------------------------
2、需求:将键盘录入的数据保存到一个文件中。
这个需求中有源和目的都存在。
那么分别分析
源:InputStream Reader
是不是纯文本?是!Reader
设备:键盘。对应的对象是System.in.
不是选择Reader吗?System.in对应的不是字节流吗?
为了操作键盘文本数据方便。转成字符流,按照字符串操作是最方便的。
所以,既然明确了Reader,就将System.in转成字符流Reader
用到了Reader体系中转换流InputStreamReader
InputStreamReader isr = new InputStreamReader(System.in);
需要提高效率吗?需要!BufferedReader
BufferedReader bufr = new BufferedReader(isr);

目的:OutputStream Writer
是否是纯文本?是!Writer。
设备:硬盘上的文件,使用FileWriter
FileWriter fw = new FileWriter("c.txt");
需要提高效率?需要!BufferedWriter
BufferedWriter bufw = new BufferedWriter(fw);
**********************************************************************************
扩展一下!!!想要把录入的数据按照指定的编码表(urf-8),将数据存到文件中。
目的:OutputStream Writer
是否是纯文本?是!Writer。
设备:硬盘上的文件,使用FileWriter
FileWriter使用的是默认表码表。GBK

但是存储时,需要加入指定编码表,而制定的编码表只有转换流可以指定。
所以要使用的对象是OutputStreamWriter。
而该转换流对象要接受一个字节输出流。而且还可以操作文件的字节输出流。FileOutputStream
FileOutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d.txt"),"UTF-8");
需要提高效率?需要!BufferedWriter
BufferedWriter bufw = new BufferedWriter(osw);

所以记住,转换流是字符和字节的桥梁。通常,涉及到字符编码转换时,需要用到转换流。
------------------------------------------------------------------------------------------------------------
/*
练习:讲一个文本数据打印到控制台上。按照以上格式自己完成三个明确
*/
public class TransStreamDemo 
{
	public static void main(String[] args) throws IOException
	{
		//System.setIn(new FileInputStream("PersonDemo.java"));
		System.setOut(new PrintStream("zz.txt"));
		//键盘录入最常见写法
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
		String line = null;
		while((line = bufr.readLine())!= null)
		{
			if("over".equals(line))
				break;
				bufw.write(line.toUpperCase());
				bufw.newLine();
				bufw.flush();
		}
		bufr.close();
	}
}



非常棒的io流操作的小demo

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面。照旧,文章依旧以例子为主,因为...
  • yong318585
  • yong318585
  • 2014年11月26日 10:21
  • 1262

Java中的IO技术使用总结

请尊重他人劳动成果,请勿随意剽窃,转载请注明,谢谢!转载请注明出处:http://blog.csdn.net/evan_man/article/details/51812678          ...
  • evan_man
  • evan_man
  • 2016年07月21日 15:21
  • 2205

java IO流学习总结

Java中的流,可以从不同的角度进行分类。     按流的方向分:输入流和输出流。     按处理数据单位分:字节流和字符流。     按实现功能分:节点流和处理流。       输出流:     ...
  • du_minchao
  • du_minchao
  • 2015年10月11日 12:35
  • 15132

Java IO学习札记(File类的使用)

学习了毕老师的java io技术的File操作,获益匪浅,将平时可能用到的一些东西记下来,以备不时只需,所谓好记性不如烂笔头嘛~ 我们知道,IO流的操作很大程度上都跟File是有关联的,所以java为...
  • taoshuizhongren
  • taoshuizhongren
  • 2013年04月26日 00:01
  • 523

Java IO学习札记(字符/节流)

前两天学习了老师的java基础,一直没时间总结IO流,现在闲来总结一下,问题可能比较多,望谅解~ 一、理解什么是IO流?         流,可以简单的理解为“水流”,那我们知道,这个一条河有两头,发...
  • taoshuizhongren
  • taoshuizhongren
  • 2013年04月24日 22:59
  • 423

黑马程序员_Java基础_IO流(字符流缓冲区和字节流相关操作以及相关操作技巧)

------- android培训、java培训、期待与您交流! ---------- 一、IO流(BufferedWriter) 字符流的缓冲区: 缓冲区提高了数据的读写效率,对应的类: Bu...
  • yangcheng91
  • yangcheng91
  • 2012年08月19日 13:36
  • 482

java中的IO流操作大全

  • 2013年07月25日 13:37
  • 830KB
  • 下载

Java IO流操作

  • 2016年06月16日 16:10
  • 11KB
  • 下载

JAVA-IO流主要类的demo 包括对TXT文件的操作

  • 2017年08月01日 16:36
  • 54KB
  • 下载

java 文件操作及IO流

  • 2011年12月12日 18:27
  • 12KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java IO学习札记(IO流操作小技巧)
举报原因:
原因补充:

(最多只允许输入30个字)