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
*/
分享到:
相关推荐
总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...
Java IO流总结 Java IO流是Java语言中最基本和最重要的输入/输出机制,负责将数据从外部世界输入到Java应用程序中或将数据从Java应用程序输出到外部世界。IO流可以分为两大类:字节流和字符流。 1. 节点流:离数据...
下面是对Java IO流的详细总结: 1. 流的概念: 流是一种抽象的数据传输方式,可以将数据从一个地方传输到另一个地方。Java中的流分为输入流和输出流,分别用于读取和写入数据。流按照处理数据的不同类型,又可以...
Java IO流是Java平台中处理输入输出操作的核心组件,它允许程序与各种数据源(如文件、设备、网络连接)进行交互。IO流系统由多个类和接口组成,它们位于java.io包中,为开发者提供了读写数据的丰富功能。在Java中,...
字节流、文件流、文件操作、字节流文件流相互转换,流的包装
### 自己总结的IO流操作 #### 知识点概览 本文档主要涉及Java中的IO流操作,包括输出流(OutputStream)、输入流(InputStream)、对象流(ObjectOutputStream与ObjectInputStream)、字符输出流(Writer)及字符...
为了提高IO操作的效率,Java提供了缓冲流,如`BufferedInputStream`和`BufferedOutputStream`,以及`BufferedReader`和`BufferedWriter`。这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流...
Java NIO(New IO)提供了非阻塞的IO操作,通过选择器(Selector)可以同时监听多个通道,提高了IO性能。Java 7引入了NIO.2,引入了Path、Files、Paths等新类,使得文件操作更加简洁。 总结,Java中的IO文件流操作...
在这个大总结中,我们将深入探讨Java IO流的基本概念、分类、常用类以及实践应用。 1. **基本概念** - **流(Stream)**:在Java中,流是一个抽象的概念,代表数据的有序序列。它可以是字节流或字符流,流向可以是...
### IO流的总结 #### 一、IO流概述 在计算机科学中,输入输出(Input/Output,简称I/O)是指计算机系统与外部环境之间的数据交互过程。在Java编程语言中,I/O流是一种非常重要的机制,用于实现数据的读取和写入。...
10. IO流的继承关系和其他常用对象:Java的IO库中定义了大量的流相关类,它们之间具有继承关系,例如FileInputStream和FileOutputStream是字节流的两个具体实现,用于文件的读写操作;BufferedReader和...
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的I/O操作主要涉及使用Java语言进行输入和输出操作。Java的所有I/O机制都是基于数据流来进行输入输出,这些数据流表示了字符或字节数据的流动序列。理解Java的I/O模型对于...
Java的IO流是Java平台中用于输入输出操作的重要部分,它提供了一种高效且灵活的方式来处理数据传输。本文将深入探讨Java的IO流,包括其概念、分类、常用类和对象,以及它们在实际编程中的应用。 首先,流是Java中...
Java IO操作是Java编程中非常重要的一个部分,它主要用于数据的输入输出,包括从文件、网络、内存等来源获取数据,以及向这些目的...在实际编程中,根据具体需求选择合适的流类型和组合,可以实现高效且可靠的IO操作。
通过增加一层缓冲机制,这两个类可以提高IO操作的效率。BufferedWriter提供了newLine()方法来写入不同操作系统的行分隔符,而BufferedReader提供了readLine()方法来读取一行数据。使用这两个类的时候,可以先写入...
在Java中,IO流操作是用于处理输入与输出的抽象机制,它提供了在不同的数据源和目标之间传输数据的手段。流的概念最早起源于UNIX系统中的管道概念,是一个连续的数据流,可以理解为水流,从源端流向目的端。 一、流...
本文将详细介绍如何使用C#语言对文本文件进行高效的IO操作,并展示一种特定的数据处理方式。 #### 二、背景 根据题目描述,我们需要处理的是一个包含学生学号及各科成绩的文本文件。文件中的每一行代表一个学生的...
- **异常处理**: 由于IO操作容易引发异常,因此在编写代码时需要考虑异常处理逻辑。 #### 五、OOP中的继承性与装饰模式的区别 虽然这份文档主要讨论的是IO流的内容,但在最后一部分提到了一个有趣的问题:“OOP的...