`
caiwb1990
  • 浏览: 315140 次
  • 性别: 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
分享到:
评论

相关推荐

    《JAVA_IO流学习总结》

    总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...

    Java IO流 总结

    Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...

    JavaIO流详细总结

    下面是对Java IO流的详细总结: 1. 流的概念: 流是一种抽象的数据传输方式,可以将数据从一个地方传输到另一个地方。Java中的流分为输入流和输出流,分别用于读取和写入数据。流按照处理数据的不同类型,又可以...

    Java IO流总结

    Java IO流是Java平台中处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、设备、网络连接)进行交互。IO流系统由多个类和接口组成,它们位于java.io包中,为开发者提供了读写数据的丰富功能。在Java中,...

    IO文件流总结

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

    自己总结的IO流操作

    ### 自己总结的IO流操作 #### 知识点概览 本文档主要涉及Java中的IO流操作,包括输出流(OutputStream)、输入流(InputStream)、对象流(ObjectOutputStream与ObjectInputStream)、字符输出流(Writer)及字符...

    Java-Io流,练习

    为了提高IO操作的效率,Java提供了缓冲流,如`BufferedInputStream`和`BufferedOutputStream`,以及`BufferedReader`和`BufferedWriter`。这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流...

    IO文件流操作

    Java NIO(New IO)提供了非阻塞的IO操作,通过选择器(Selector)可以同时监听多个通道,提高了IO性能。Java 7引入了NIO.2,引入了Path、Files、Paths等新类,使得文件操作更加简洁。 总结,Java中的IO文件流操作...

    javaIO流知识大总结

    在这个大总结中,我们将深入探讨Java IO流的基本概念、分类、常用类以及实践应用。 1. **基本概念** - **流(Stream)**:在Java中,流是一个抽象的概念,代表数据的有序序列。它可以是字节流或字符流,流向可以是...

    IO流的总结

    ### IO流的总结 #### 一、IO流概述 在计算机科学中,输入输出(Input/Output,简称I/O)是指计算机系统与外部环境之间的数据交互过程。在Java编程语言中,I/O流是一种非常重要的机制,用于实现数据的读取和写入。...

    JAVA_IO流学习总结

    10. IO流的继承关系和其他常用对象:Java的IO库中定义了大量的流相关类,它们之间具有继承关系,例如FileInputStream和FileOutputStream是字节流的两个具体实现,用于文件的读写操作;BufferedReader和...

    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的I/O操作主要涉及使用Java语言进行输入和输出操作。Java的所有I/O机制都是基于数据流来进行输入输出,这些数据流表示了字符或字节数据的流动序列。理解Java的I/O模型对于...

    Java之IO流学习总结

    Java的IO流是Java平台中用于输入输出操作的重要部分,它提供了一种高效且灵活的方式来处理数据传输。本文将深入探讨Java的IO流,包括其概念、分类、常用类和对象,以及它们在实际编程中的应用。 首先,流是Java中...

    JAVAIO操作总结

    Java IO操作是Java编程中非常重要的一个部分,它主要用于数据的输入输出,包括从文件、网络、内存等来源获取数据,以及向这些目的...在实际编程中,根据具体需求选择合适的流类型和组合,可以实现高效且可靠的IO操作。

    Java之IO流学习总结.pdf

    通过增加一层缓冲机制,这两个类可以提高IO操作的效率。BufferedWriter提供了newLine()方法来写入不同操作系统的行分隔符,而BufferedReader提供了readLine()方法来读取一行数据。使用这两个类的时候,可以先写入...

    java中的IO流操作大全

    在Java中,IO流操作是用于处理输入与输出的抽象机制,它提供了在不同的数据源和目标之间传输数据的手段。流的概念最早起源于UNIX系统中的管道概念,是一个连续的数据流,可以理解为水流,从源端流向目的端。 一、流...

    C# IO 操作,C# IO高性能操作

    本文将详细介绍如何使用C#语言对文本文件进行高效的IO操作,并展示一种特定的数据处理方式。 #### 二、背景 根据题目描述,我们需要处理的是一个包含学生学号及各科成绩的文本文件。文件中的每一行代表一个学生的...

    java Io流总结(毕向东)

    - **异常处理**: 由于IO操作容易引发异常,因此在编写代码时需要考虑异常处理逻辑。 #### 五、OOP中的继承性与装饰模式的区别 虽然这份文档主要讨论的是IO流的内容,但在最后一部分提到了一个有趣的问题:“OOP的...

Global site tag (gtag.js) - Google Analytics