`
caiwb1990
  • 浏览: 308025 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IO操作流总结

    博客分类:
  • java
阅读更多
import java.io.*;


/*

IO流的操作规律。
三个明确:

1,明确源(读)和目的(写)。
		其实就是在明确输入流还是输出流。
		源:输入流 InputStream  Reader
		目的:输出流 OutputStream  Writer


2,明确操作的数据内容。
		其实就是在明确字符流还是字节流。
		如果数据都是纯文本数据使用字符流。
		如果数据是非文本数据使用字节流。

前两步已经明确了使用哪一个体系。


3,明确具体的设备。
	明确使用的具体对象。

	源设备:内存,键盘(System.in),硬盘(文本)(File)。
	目的设备:内存,控制台(System.out),硬盘(文件)(File).

扩展部分:需要进行高效操作吗?
	是:加入缓冲区技术(Buffered)。


--------------------------------------------------
需求1:
读取键盘,并键盘录入的数据变成大写打印在控制台上。


需求2:
读取键盘录入数据,将数据变成大写,保存到一个文件中。

分析:
源:键盘,InputStream。Reader
是纯文本数据:Reader.
设备:System.in.

已经明确了使用读取字符流体系,可是设备是键盘System.in是读取字节流对象。
这时就需要将字节流转成字符流。用到了InputStreamReader.

需要高效吗?需要。Buffered

BufferedReader bufr = 
		new BufferedReader(new InputStreamReader(System.in));
Note: 键盘录入,就写这句代码!


目的:硬盘,OutputStream Writer
纯文本?yes Writer
设备:硬盘文件 FileWriter。
缓冲,yes

BufferedWriter bufw = new BufferedWriter(new FileWriter("a.txt"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt")));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt"),"GBK"));
这三句都是等效的。使用都是默认的编码表GBK.

另加一个需求?
想要将录入的数据按照UTF-8另一个编码表的形式进行数据的存储。
那么目的就要变化了,因为FileWriter,虽然可以作为文件目的对象,但是该对象中的编码表是默认的GBK。
当想要指定编码表时,必须要使用转换流。
BufferedWriter bufw = 
	BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt"),"UTF-8"));


##############################################
#记住:凡是涉及到编码转换的操作,            #
#一定要想到转换流,如果只用默认码表,		 #
#可是使用转换流的子类FileWriter或FileReader. #
##############################################



-----------------------------------------------------


需求3:
读取一个文本文件,将文本文件的数据展现在控制台上。
分析:
源:硬盘文件。InputStream Reader。
纯文本?yes  Reader。
设备:硬盘 FileReader.
缓冲?yes  BufferedReader 

BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));

目的:OutputStream  Writer
纯文本?yes  Writer.
设备:控制台 System.out.

发现控制台的对象是System.out.是字节输出流。
因为是纯文本数据,使用Writer所以可以将字符流转成成字节串流。
使用了转换流 OutputStreamWriter

需要高效吗?需要。

BufferedWriter bufw = 
	new BufferedWriter(new OutputStreamWriter(System.out));



---------------------------------------------------


需求4:
读取一个文本文件,将数据变成大写,存到一个文件中。

分析:
源?目的?
源:一个硬盘文件。就明确了要使用InputStream  Reader
是纯文本的吗?是,就进一步明确了使用Reader.
什么设备:硬盘文件。在进一步明确了使用Reader体系中FileReader

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

需要提高效率吗?需要!
BufferedReader bufr = new BufferedReader(fr);



目的:一个硬盘文件。使用体系 OutputStream Writer
是纯文本吗?是,使用Writer。
目的设备:硬盘文件.使用FileWriter.

FileWriter fw = new FileWriter("b.txt");

需要高效吗?需要!
BufferedWriter bufw = new BufferedWriter(fw);






*/

class  TransStreamDemo2
{
	public static void main(String[] args)throws IOException 
	{

		/*
		InputStream in = System.in;

		//需要将字节流转成字符流。
		InputStreamReader isr = new InputStreamReader(in);

		//使用缓冲区的readLine
		BufferedReader bufr = new BufferedReader(isr);


		OutputStream out = System.out;
		
		OutputStreamWriter osw = new OutputStreamWriter(out);


		BufferedWriter bufw = new BufferedWriter(osw);
		*/


		BufferedReader bufr = 
			new BufferedReader(new InputStreamReader(new FileInputStream("LineNumberReaderDemo.java")));

		BufferedWriter bufw = 
			new BufferedWriter(new OutputStreamWriter(new FileOutputStream("copyLine.txt")));

		String line  = null;

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

			if("over".equals(line))
				break;
			bufw.write(line.toUpperCase());
			bufw.newLine();
			bufw.flush();

		}
		bufw.close();
		bufr.close();

	}
}
/*

c:\abc
c:\abc\haah
c:\abc\0.mp3    "c:\abc\0.mp3"--replace("c:\abc","d:\qq\abc")->"d:\qq\abc\0.mp3"

new FileInputStream("c:\abc\0.mp3");

new FileOutputStream("d:\qq\abc\0.mp3");


d:\qq\
d:\qq\abc\haah
d:\qq\abc\0.mp3


d:\qq\
d:\qq\abc
d:\qq\abc\0.mp3

*/



0
0
分享到:
评论

相关推荐

    自己总结的IO流操作

    自己总结的IO流操作,非常简单和实用 ,学会以后IO就没有问题了

    IO文件流总结

    字节流、文件流、文件操作、字节流文件流相互转换,流的包装

    JAVA_IO操作总结——节点流和处理流.pdf

    JAVA_IO操作总结——节点流和处理流.pdf JAVA_IO操作总结——节点流和处理流.pdf

    java中的IO操作总结(四)

    java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...

    Java之IO流学习总结

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...

    Java-IO流/Stream流总结

    Java-IO流/Stream流总结,内容一针见血,没有废话,言简意赅 内容:IO流及其分类、分类比较、转换流、缓存流、IO流异常处理、Stream流、Properties教程等。 适合人群:有编程基础及Java基础伙伴 适用场景:Java中的...

    java io 操作总结

    最新的java io流总结,希望大家花时间耐心的看看,同时也写点实例,不要光看!

    java中的IO操作总结(一)

    java中的IO操作总结(一) 所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节(我想,文章太长了,谁都没耐心翻到最后) 对于文件内容...

    Java IO流学习总结

    流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 

    java 复制文件 io流操作

    完整的文件io 流操作,有四个函数, Writer read inputStream outputStream自己总结的东东,让大家用用,不图得分,

    java IO流总结.md

    java I/O流的总结 1.操作数据单位:字节流、字符流 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,...),使用字节流处理 2.数据的流向:输入流、输出流 ...

    JavaSE专题-IO流重点总结(必读).doc

    O流总结 异常 父类是Throwable,处理异常的两种方案,一种try --catch 另外一种抛出 熟练使用Try---catch---finally,注意: 能和try一起使用的只有catch和finally关键字 Try块里面存放的是有可能发生异常的代码,通常和...

    JAVA IO流的增删改查

    自已写了一个JAVA IO流的增删改查操作, 算是对IO的总结吧,初学者可以看下!

    JAVA_IO详解_包括讲解IO中各种流及其用法.pdf

    java IO流总结文档。总要总结了 java IO 流的主要基本操作和使用到的类及方法。对于入门比较有用,如果对 IO 流比较了解,就没必要看了。

    IO流的使用,自己的心得

    * 用缓存的字节入做写入操作 * */ @Test public void testOutPut(){ String filePath = "F://test1.txt"; String writeString = "testOutPut:1231"; int tempLength = 2; StringBuffer bs = new ...

    Java_IO操作总结

    详解Java I/O相关知识点.学习Java语言IO的数据流概念,讲述了每个类的具体应用范围,IO基本概念,输入输出流的处理,并且给出众多的实例代码。 。

    java IO章节的总结

    IO从大的方向上分为字节流和字符流,包括四个抽象类: 1、输入:Reader, InputStream类型的子类(字符,字节) 2、输出:Writer, OutputStream类型的子类(字符,字节) 决定使用哪个类以及它的构造进程的一般...

    Java-初学IO流总结

    IO流 在Java当中可以使用流来完成读写文件等操作,那么什么是流呢? 1. 什么是流? Java当中的流大概的分为输入流和输出流两类,输入流,就是从不同的数据源当中读取数据,数据源可以是磁盘文件、内存数据等。 输出...

    Java流总结

    称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 • 根据处理数据类型的不同分为:字符流和字节流 • 根据数据流向不同分为:输入流和输出流 字符流和字节流...

    Java IO 体系.md

    - Java IO 流对象 - 字节流对象 - InputStream - OutputStream - 字符流对象 - Reader - Writer - 字节流与字符流的转换 - 新潮的 NIO - 缓冲区(Buffer) - 通道(Channel) - 示例:文件拷贝案例 - ...

Global site tag (gtag.js) - Google Analytics