流式输入输出与文件处理

合集下载

ffmpeg工作流程

ffmpeg工作流程

ffmpeg工作流程
FFmpeg是一个用于处理多媒体数据的开源软件,它可以用来录制、转换和流式传输音频和视频。

在本文中,我们将探讨FFmpeg的工作流程。

1. 输入多媒体数据。

FFmpeg的工作流程始于输入多媒体数据。

这些数据可以是来自摄像头、麦克风或文件的音频和视频流。

FFmpeg支持各种不同的输入格式,包括但不限于MP4、AVI、FLV、MP3和WAV。

2. 解码。

一旦输入多媒体数据被FFmpeg接收,它将进行解码处理。

这意味着数据将被解析成原始的音频和视频流。

FFmpeg将使用适当的解码器来解码数据,以便后续处理。

3. 处理。

在解码完成后,FFmpeg可以执行各种处理操作,例如裁剪、旋
转、调整音量、添加滤镜等。

这些处理操作可以通过命令行参数或
脚本来指定。

4. 编码。

处理完成后,音频和视频流将被编码成所需的输出格式。

编码
器将把处理过的数据重新打包成新的音频和视频文件,可以是MP4、AVI、FLV等格式。

5. 输出多媒体数据。

最后,编码后的多媒体数据将被输出到所需的目标,可以是文件、流媒体服务器或直接传输到网络。

FFmpeg支持多种输出选项,
包括保存到文件、实时流式传输等。

总结。

FFmpeg的工作流程涉及输入多媒体数据、解码、处理、编码和
输出多媒体数据。

它提供了丰富的功能和灵活的配置选项,使其成
为处理音频和视频的强大工具。

通过了解FFmpeg的工作流程,用户
可以更好地利用其功能,实现各种多媒体处理需求。

第八章输入输出处理输入输出处理是...

第八章输入输出处理输入输出处理是...

第八章输入/输出处理输入/输出处理是程序设计中非常重要的一部分,比如从键盘读取数据、从文件中读取数据或向文件中写数据等等,而键盘、监视器、磁盘存储设备都称为输入、输出源。

Java把这些不同类型的输入、输出源抽象为流(stream)。

Java程序可以用输入流从一些输入源读数据,用输出流向一些输出源写数据。

Jdk 提供了包java.io,其中包括一系列的类来实现输入/输出处理。

从jdk1.1开始,java.io包中的流包括字节流和字符流。

§8.1输入/输出字节流概述§8.1.1 I/O字节流的层次结构在java中,所有的输入流都是从抽象类InputStream继承而来,所有的输出流都是从OutputStream 继承而来。

以下给出了java语言IO包中输入/输出处理类之间的继承关系。

输入、输出字节流的类层次一、简单的输入、输出流1.FileInputStream和FileOutputStream:用于本地文件系统的文件读写。

2.PipedInputStream和PipedOutputStream:用于完成管道的输入和输出。

管道用于将一个程序(或线程或代码块)的输出引导进另一个程序(或线程或代码块)的输入,所有PipedInputStream必须连接到一个PipedOutputStream所有PipedOutputStream必须连接到一个PipedInputStream。

3.ByteArrayInputStream和ByteArrayOutputStream:读写内存数据。

4.SequenceInputStream:用于将多个输入流连接到一个输出流。

5.StringBufferInputStream:用于读取StringBuffer类可变字符串中的数据。

二、过滤流1.DataInputStream和DataOutputStream:用一种与机器无关的格式读写java语言的基本数据类型。

sedes 原理

sedes 原理

sedes 原理
sed是一个非交互式的流编辑器,其工作原理如下:
1. 逐行读取输入:sed每次只从文件(或输入)中读取一行内容,然后对该行进行指定的处理。

2. 缓冲区处理:sed将读取的行内容放入缓冲区中,对缓冲区里的内容进行处理,处理完毕后不会直接写回原文件,而是将结果输出到屏幕上。

除非使用shell的输出重定向来保存结果,否则不会对原文件造成任何破坏。

3. 流式处理:整个文件像流水一样被逐行处理然后逐行输出。

4. 模式空间和暂存缓冲区:sed运行过程中维护着两个缓冲区,一个是活动的“模式空间(pattern space)”,另一个是起辅助作用的“暂存缓冲区(holding space)”。

一般情况下,每当运行sed,sed首先把第一行装入模式空间,进行处理后输出到屏幕,然后将第二行装入模式空间替换掉模式空间里原来的内容,然后进行处理,以此类推。

一般情况下暂存缓冲区是用不到的,但有特殊的命令可以在模式空间与暂存缓冲区之间交换数据。

以上信息仅供参考,如需了解更多信息,建议查阅sed相关书籍或咨询专业人士。

流式输入输出与文件处理

流式输入输出与文件处理

实验5 流式输入输出与文件处理1 实验目的(1) 掌握字节流和字符流的特点和处理差异;(2) 掌握过滤流的使用;(3) 掌握File类的使用;(4) 掌握随机文件的使用。

(5) 掌握对象系列化的概念以及访问文件时对象读写方法。

2 知识要点2.1 面向字节的输入/输出流(1)类InputStream是面向字节的输入流的根。

其主要方法见表13-1。

表13-1 类InputStream的方法(2)数据过滤流DataInputStream该流实现DataInput接口,主要方法有:readByte(),readBoolean()、readShort()、readChar()、readInt() 、readLong()、readFloat()、readDouble()、readUTF()等。

(3)类OutputStream是面向字节输出流的根,其主要方法有:●void write(int b) :将参数b的低字节写入输出流●void write(byte b[]) :将字节数组全部写入输出流●void write(byte b[],int offset, int len):将字节数组中从b[offset]开始处的len个字节写入至输出流。

(4)类DataOutputStream实现各种类型数据的输出处理,它实现了DataOutput接口,主要方法有:writeByte(int)、writeBytes(String)、writeBoolean(boolean)、writeChars(String)、writeInt(int) 、writeLong()、writeFloat(float)、writeDouble(double)、writeUTF(String)等。

2.2 面向字符的输入与输出流类Reader是面向字符的输入流的根,其提供的方法与InputStream类似,只是将基于Byte的参数改为基于Char。

OOP 07章 流式输入输出及文件处理

OOP 07章 流式输入输出及文件处理

7.3 Java的字节流处理
• Java字节流处理类集
7.3.1 字节输入流InputStream InputStream抽象类从输入设备或文件中读 取数据使用的字节流 提供下面几个用于读取数据的成员方法:
read() read(byte[] buffer) read(byte buffer[], int offset, int length) skip(long n) close()
2. 检测File对象
File类提供了一整套应用于File对象的成员方法。 exists() 检测File对象所描述的文件或目录是否存 在。 isDirectory() 检测File对象所描述的是否为目录。 isFile() 检测File对象所描述的是否为文件。 isHidden() 检测File对象所描述的是否为一个隐藏 文件。 canRead() 检测File对象所描述的文件是否可读。 canWrite() 检测File对象所描述的文件是否可写。 equals(Object obj) 检测File对象描述的绝对路径 与obj的绝对路径是否相等。
程序ቤተ መጻሕፍቲ ባይዱ
数据
输出设备
数据源
数据目标
当试图将外部的数据输入到程序中时,流中的 数据源是输入设备,数据目标是程序,这个流 被称为输入流(input stream)。
输入设备
数据源
数据
程序
数据目标
用流机制处理I/O的主要好处是:程序
中有关I/O的代码与设备无关,
程序不需知道(/处理)每一种设备的细 节,使程序能够适应各种设备的输入 输出。
从标准输入流读取数据
System.in是原始InputStream对象,需要经过包装才能有效地 读取数据。常用的方法: Import java.io.*; public class TypeInString{ public static void main(String[] args){ BuferedReader in = new Buffered Reader( new InputStreamReader( System.in ) ); String s;

第10章 输入输出(过程式)

第10章 输入输出(过程式)
exit(-1); }
往文件中写入数据
• 输出一个字符,输出成功时返回输出的字符
int fputc(int c, FILE *stream );
• 输出一个字符串,输出成功时返回一个非负整数
int fputs(const char *string, FILE *stream );
• 输出基本类型数据,返回输出的字符数
关闭文件
• fclose(FILE *stream );
文件输入
打开文件
• FILE *fp=fopen( const char *filename, const char *mode );
• filename是要打开的外部文件名; • mode是打开方式,它可以是:
"r",表示打开一个外部文件用于读操作,这时, 外部文件必须存在,否则打开文件失败。
“a”:打开一个外部文件用于添加(从文件末尾)操作。 如果外部文件不存在,则先创建该外部文件。
在打开方式w或a的后面还可以加上b,指出以二进制 方式打开文件。默认打开方式为文本方式。
对文件打开操作的成功与否进行判断:
FILE *fp=fopen("d:\\data\\file1.txt","w"); if (fp == NULL) { cerr << "文件打开失败\n";
在C++中,输入/输出不是语言定义的成分, 而是由具体的实现(编译程序)作为标准 库的功能来提供。
C++的I/O流
在C++中,输入/输出操作是一种基于字节流的 操作:
• 在进行输入操作时,可把输入的数据看成逐个字节 地从外设流入到计算机内部(内存);

第7章 流式输入输出

第7章 流式输入输出
第7章 流式输入输出
第7章
流式输入输出
第7章 流式输入输出
学习目标
java流式输入/输出原理
java基本I/O流类型 字节流和字符流 节点流和处理流 Java命令行参数和系统属性 标准I/O,文件I/O
第7章 流式输入输出
Java I/O基本原理
为进行数据的输入/输出操作,Java中把不同的输入/输出
Memory Array
Memory String
Pipe
PipedReader
PipedWritຫໍສະໝຸດ rPipedInputStream
PipedOutputStream
第7章 流式输入输出
节点流应用举例--文件复制
import java.io.*; public class Test7_1 { public static void main(String[] args) { try { FileReader input = new FileReader("Test7_1.java"); FileWriter output = new FileWriter("temp.txt"); int read = input.read(); while ( read != -1 ) { output.write(read); read = input.read(); } input.close(); output.close(); } catch (IOException e) { System.out.println(e); } } }
第7章 流式输入输出
I/O 流的链接
第7章 流式输入输出
处理流(Processing Streams)

java输入输出流实验报告总结】

java输入输出流实验报告总结】

java输入输出流实验报告总结】Java输入输出流实验报告总结在本次实验中,我们学习了Java的输入输出流的概念和用法。

输入输出流是Java中用于处理输入和输出操作的工具。

通过输入流,我们可以将外部数据输入到程序中进行处理,通过输出流,我们可以将程序中的数据输出到外部文件或设备上。

在本次实验中,我们通过几个具体的示例来探索输入输出流的不同用法和特性,以期更好地理解和掌握它们的使用。

首先,我们学习了如何使用FileInputStream和FileOutputStream这两个类来进行字节流的输入和输出操作。

这两个类分别用于从指定文件中读取字节数据和将字节数据写入到指定文件中。

通过这两个类,我们可以实现文件的拷贝、移动、创建等功能。

同时,我们还了解了如何使用BufferedInputStream和BufferedOutputStream这两个类来提高读写效率。

这两个类可以通过缓存数据来减少对底层系统的IO操作次数,从而提高读写速度。

接下来,我们学习了如何使用FileReader和FileWriter这两个类进行字符流的输入和输出操作。

这两个类与字节流的输入输出类似,但它们处理的是字符数据。

通过这两个类,我们可以读取和写入文本文件中的字符数据。

我们还了解了字符编码和字符集的概念,并学习了如何使用InputStreamReader和OutputStreamWriter来进行字符流和字节流之间的转换。

除了字节流和字符流,我们还学习了对象流的使用。

对象流可以将Java 对象直接写入到文件中,也可以从文件中读取Java对象。

这在处理一些复杂的对象数据时非常有用。

我们通过使用ObjectInputStream和ObjectOutputStream这两个类,实现了对象的读写操作。

需要注意的是,被写入和读取的对象必须实现Serializable接口,否则会抛出NotSerializableException异常。

在实验过程中,我们还探索了如何使用标准输入输出流。

python io模块详解

python io模块详解

python io模块详解
Python 的io 模块是用于处理各种输入输出流的核心模块。

它提供了处理文本和二进制数据的工具,可以轻松地在内存中创建数据流、处理文件对象和进行流式处理等操作。

以下是io 模块中常用的一些类和方法:
1. 文件操作:
open() 函数:用于打开文件,并返回文件对象。

TextIOWrapper 和BufferedReader:这两个类用于对文本和二进制文件进行包装和处理。

2. 流处理:
StringIO 和BytesIO:用于在内存中创建文本和二进制流,可以像文件一样对其进行读写操作。

3. 文本处理:
TextIOWrapper:用于对文本文件进行包装,提供了读取、写入、迭代等操作。

4. 二进制处理:
BufferedReader 和BufferedWriter:用于对二进制数据进行读写操作。

5. 其他类和方法:
IOBase:所有I/O 类的基类,提供了通用的I/O 方法和行为。

FileIO:用于对文件进行底层的二进制I/O 操作。

StringIO:用于在内存中创建类文件对象,进行字符串操作。

BytesIO:用于在内存中创建二进制数据对象,进行字节串操作。

这些类和方法可以灵活组合使用,根据不同的需求进行文件读写、流处理以及数据操作等操作。

通过io 模块,可以方便地在Python 中处理各种输入输出操作,无论是文本还是二进制数据。

探索Java中的流式处理高效地处理数据

探索Java中的流式处理高效地处理数据

探索Java中的流式处理高效地处理数据在当今大数据时代,高效地处理和分析海量数据已成为IT领域的一项重要挑战。

在众多的编程语言中,Java作为一种强大而受欢迎的语言,拥有各种处理数据的方法和技术。

其中,流式处理是一种在Java中高效处理数据的方法。

本文将探讨Java中的流式处理,并介绍其在数据处理方面的应用。

一、什么是流式处理流式处理是指以流的形式将数据按照一定的规则进行处理和传递的过程。

在Java中,流式处理是一种基于流(Stream)的编程模型,通过对数据流的操作实现数据的高效处理。

流可以看作是数据的管道,数据从输入端流入管道,经过一系列的操作,最终输出到输出端。

在流式处理中,可以对数据进行过滤、转换、聚合等各种操作,以满足不同的需求。

二、流式处理的优势与传统的迭代式处理相比,流式处理具有一定的优势:1. 高效性:流式处理使用的是内部迭代的方式,相比传统的外部迭代,可以减少循环控制、简化代码结构,提高处理效率。

2. 并行化:流式处理可以通过多线程或并行流的方式进行并行计算,充分利用多核处理器的性能,加速数据处理过程。

3. 延迟加载:流式处理采用惰性求值的机制,只有在需要输出结果时才进行计算,可以减少不必要的计算开销。

三、Java中的流式处理APIJava 8引入了新的Stream API,提供了丰富的操作方法和函数式编程的支持,使得流式处理变得更加简洁和灵活。

下面介绍几个常用的流式处理操作方法:1. filter:用于过滤流中的元素,返回符合条件的元素组成的新流。

```javaList<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());```2. map:用于对流中的元素进行转换,返回转换后的元素组成的新流。

文件输入输出流

文件输入输出流

文件输入输出流文件输入输出流是在计算机中进行文件读写操作的一种机制。

通过文件输入输出流,我们可以从文件中读取数据或者将数据写入文件中。

在程序开辟中,文件输入输出流常用于读取配置文件、读取和写入日志文件、进行数据持久化等操作。

文件输入输出流的基本概念和使用方法如下:1. 文件输入流(FileInputStream):用于从文件中读取数据。

- 创建文件输入流对象:可以使用FileInputStream类的构造方法来创建一个文件输入流对象。

需要提供文件路径作为参数。

- 读取数据:可以使用文件输入流对象的read()方法来读取数据。

read()方法会返回一个整数值,表示读取到的字节数据。

当读取到文件末尾时,read()方法会返回-1。

2. 文件输出流(FileOutputStream):用于将数据写入文件中。

- 创建文件输出流对象:可以使用FileOutputStream类的构造方法来创建一个文件输出流对象。

需要提供文件路径作为参数。

如果文件不存在,会自动创建新文件;如果文件已存在,会清空文件内容。

- 写入数据:可以使用文件输出流对象的write()方法来写入数据。

write()方法接受一个字节数组作为参数,将字节数组中的数据写入文件中。

文件输入输出流的使用示例:```javaimport java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class FileIOExample {public static void main(String[] args) {// 文件输入流示例try {FileInputStream inputStream = new FileInputStream("input.txt");int data;while ((data = inputStream.read()) != -1) {System.out.print((char) data);}inputStream.close();} catch (IOException e) {e.printStackTrace();}// 文件输出流示例try {FileOutputStream outputStream = new FileOutputStream("output.txt"); String data = "Hello, World!";byte[] bytes = data.getBytes();outputStream.write(bytes);outputStream.close();} catch (IOException e) {e.printStackTrace();}}}```在上面的示例中,我们通过文件输入流读取了名为"input.txt"的文件中的数据,并使用文件输出流将字符串"Hello, World!"写入了名为"output.txt"的文件中。

C++中的文件输入输出

C++中的文件输入输出

C++中的⽂件输⼊输出简介本教程将以C++最基本的⽂件I/O(输出/输出)开始。

此后,我将从更深⼊的⽅⾯,为你展⽰⼀些技巧,并分析给出⼀些有⽤的函数。

你需要对C++有⼀个较好的理解,否则这个教程于你⽽⾔将是陌⽣⽽毫⽆⽤处。

你的第⼀个程序⾸先我将给出⼀段代码,接着再逐⾏进⾏解释。

我们的第⼀个程序将建⽴⼀个⽂件,并写⼊⼀些字符:#include <fstream.h>void main() //程序从这⾥开始运⾏{ofstream SaveFile(“cpp-home.txt”);SaveFile << “Hello World, from and Loobian!”;SaveFile.close();}仅仅如此吗?没错!这个程序将在当前运⾏⽬录下建⽴⼀个名为cpp-home.txt的⽂件,并向它写⼊“Hello World, from and Loobian!”。

下⾯给出各⾏的含义:#include <fstream.h>—— 你需要包含此⽂件以使⽤C++的⽂件输⼊/输出函数。

注意:⼀旦包含了这个⽂件,你不再需要(为了使⽤cout/cin)包含iostream.h,因为fstream.h已经⾃动包含了它。

在这个头⽂件中声明了若⼲个类,包括ifstream,ofstream及fstream,它们都继承⾃istream和ostream类。

ofstream SaveFile(“cpp-home.txt”);1)ofstream即“output file stream(输出⽂件流)”。

它将建⽴⼀个句柄(handle),以便我们以后能以⼀个⽂件流的形式写⼊⽂件。

2)SaveFile—— 这是⽂件句柄的名字,当然,你还可以换⽤任何⼀个你想要的名称。

3)(“cpp-home.txt”); —— 打开名为cpp-home.txt的⽂件。

如果程序运⾏的当前⽬录已经存在这样⼀个⽂件,则它将被替换掉;万⼀不存在,程序也会为你创建⼀个为⽂件,你不必为此⽽担⼼。

流 概 述

流 概 述
输入流(Input Stream)即数据从外部世界流向计算机。 输出流(Output Stream)即是数据从计算机流向外部世界。
2021/12/17
输入输出流
2
流概述
基本输入输出流
基本的输入输出类是最简单的类,它用来处理普通的流。 其它的派生类是针对某些特定种类的输入或输出。这些 类都包含在java.io包中。
输入输出流
6
Hale Waihona Puke 流概述java.io包中字节输入流的类层次
2021/12/17
输入输出流
7
流概述
java.io包中字节输出流的类层次
2021/12/17
输入输出流
8
流概述
包中字符输入流的类层次
2021/12/17
输入输出流
9
流概述
java.io包中字符输出流的类层次
2021/12/17
输入输出流
InputStream超类提供字符输入流的编程接口和具体实现。OuputStream定义写字节或字节型数组的方法。与 输入流InputStream类似,一个输出流在创建时就自动打开,也可以用close()方法显示关闭一个输出流,或 者在对象不再被引用,这个OuputStream要成为收集的垃圾时隐式地关闭。
字符流
从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。
Reader、Writer ◇ InputStreamReader、OutputStreamWriter ◇ FileReader、FileWriter ◇ CharArrayReader、CharArrayWriter ◇ PipedReader、PipedWriter ◇ FilterReader、FilterWriter ◇ BufferedReader、BufferedWriter ◇ StringReader、StringWriter

流式处理讲解

流式处理讲解

流式处理讲解流式处理是一种高效灵活的数据处理方式,它可以将大量的数据分成小块进行逐个处理,而不需要一次性加载整个数据集。

这种处理方式能够使我们更好地应对大规模数据的处理需求,提高处理的效率和性能。

流式处理可以看作是数据处理的一种工作流程,其主要包括数据的输入、处理和输出三个环节。

首先,数据会源源不断地输入到系统中,可能来自数据库、传感器设备、网络流等各种数据源。

接着,数据经过预处理后,被逐个分解成小块,以便更高效地进行后续处理。

最后,经过处理后的结果输出到数据库、文件系统或者其他设备中,供后续的分析和使用。

流式处理的优点不胜枚举。

首先,由于数据是逐个处理的,所以流式处理可以实时地对数据进行处理和分析。

这使得我们可以及时发现数据中的异常,做出相应的响应。

其次,流式处理灵活性较高,可以根据实际需求调整数据的处理速度和精度,从而保证数据处理的质量和效率。

再次,流式处理对存储空间的要求相对较小,因为只需要存储待处理数据和中间结果,而不需要一次性加载整个数据集。

此外,流式处理还具有容错性好、可伸缩性强等特点,能够在高负载和故障环境下保持稳定的运行。

在实际应用中,流式处理可以用于各种领域,具有广泛的应用前景。

例如,金融领域可以利用流式处理技术实时监测市场行情并做出相应的决策;物联网领域可以通过流式处理技术实时处理传感器数据,从而实现智能化的设备控制;互联网广告领域可以利用流式处理技术实时分析用户点击行为,优化广告投放策略等等。

要实现高效的流式处理,还需要一些关键的技术支持。

首先,分布式计算是流式处理的核心技术之一,它可以将数据流分发到多个计算节点上进行并行处理,从而提高整体的处理能力。

其次,容错机制是保证流式处理稳定运行的关键,例如,可以采用数据备份、重试机制等方式来应对节点故障和数据丢失等问题。

此外,流式处理还需要配合一些数据传输和存储技术,例如消息队列、分布式文件系统等,来实现数据的高效传输和存储。

总之,流式处理是一种高效灵活的数据处理方式,它可以实时处理大规模的数据,提高数据处理的效率和性能。

ofstream文件输出流把二进制数据写入文件

ofstream文件输出流把二进制数据写入文件

ofstream⽂件输出流把⼆进制数据写⼊⽂件 #include <fstream>#include <sstream>using namespace std;//在实际应⽤中,根据需要的不同,选择不同的类来定义:如果想以输⼊⽅式打开,就⽤ifstream来定义;如果想以输出⽅式打开,//就⽤ofstream来定义;如果想以输⼊/输出⽅式来打开,就⽤fstream来定//ofstream //⽂件写操作内存写⼊存储设备//ifstream //⽂件读操作,存储设备读区到内存中//fstream //读写操作,对打开的⽂件可进⾏读写操作//(⼀)打开⽂件的⽅式在ios类(所以流式I/O的基类)中定义,有如下⼏种⽅式://ios::in 为输⼊(读)⽽打开⽂件//ios::out 为输出(写)⽽打开⽂件//ios::ate 初始位置:⽂件尾//ios::app 所有输出附加在⽂件末尾//ios::trunc 如果⽂件已存在则先删除该⽂件//ios::binary ⼆进制⽅式这些⽅式是能够进⾏组合使⽤的,以“或”运算(“|”)的⽅式:例如//(⼆)、保护模式//#define _SH_DENYRW 0x10 /* deny read/write mode */拒绝对⽂件进⾏读写//#define _SH_DENYWR 0x20 /* deny write mode */拒绝写⼊⽂件//#define _SH_DENYRD 0x30 /* deny read mode */拒绝⽂件的读取权限//#define _SH_DENYNO 0x40 /* deny none mode */读取和写⼊许可//#define _SH_SECURE 0x80 /* secure mode */共享读取,独占写⼊//注意:假设A进程以_SH_DENYRW 打开,那么是B进程不能再对⽂件进⾏读写。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写往显示器。 • 标准输入输出在实际运行时的具体目标对象也可能变化,
System类中提供了如下方法重新设置标准流对象: • static void setIn(InputStream in) :重新定义标准输入流 • static void setErr(PrintStream err) :重新定义标准错误输出 • static void setOut(PrintStream out) :重新定义标准输出
InputStreamReader InputStream 将面向字节的输入流类Reader的主要子类及说明(续)
FileReader
文件对象或字符串表 文件作为输入源 示的文件名
PipedReader StringReader
PipedWriter的对象 字符串
与另一输出管道相连, 读取另一管道写入的 字符
DataInputStream in=new DataInputStream(file); try { while(true) { int n1=in.readInt(); int n2=in.readInt(); System.out.println(n1+","+n2); } } catch (EOFException e) { in.close();} } catch (IOException e) { } }}
public static void main(String args[]) { int number=0; final int size=Integer.parseInt(args[1]);
byte[] b = new byte[size];
try { FileInputStream infile = new
例9-2 从键盘输入一个整数,求该数的各位数字之和
import java.io.*; public class BitSum { public static void main(String args[]) throws IOException{
DataInputStream din=new DataInputStream(System.in); System.out.print("input a integer: "); int x=din.readInt(); int sum=0; int n=x; while (n>0) {
int lastbit=n%10; n=n/10; sum=sum+lastbit; } System.out.println(x+"的各位数字之和="+sum); }}
2、 面向字节的输出流
2、文件输入/输出流的使用
类OutputStream的方法
• public void write(int b) :将参数b的低字节写入 输出流
第9章 流式输入输出与文件处理
9.1 输入输出基本概念 9.2 面向字节的输入输出 9.3 面向字符的输入输出 9.4 文件处理 9.5 对象串行化
9.1.1 I/O设备与文件
1. I/O设备分类 存储设备 存储设备包括硬盘、软盘、光盘等, 输入/输出设备 输入设备有键盘、鼠标、扫描仪等 输出设备有显示器、打印机、绘图仪等。
例9-4 找出10~100之间的所有姐妹素数,写入到文 件中。所谓姐妹素数是指相邻两个奇数均为素数
import java.io.*; public class FindSisterPrime {
public static boolean isPrime(int n) { for (int k=2;k<=Math.sqrt(n);k++) { if (n%k==0) return false;
} } catch(ArrayIndexOutOfBoundsException e) {
System.out.println("需要提供一个文件名作为命令行参数 "); } catch(FileNotFoundException e) {
System.out.println("file not find! ");} catch(IOException e) { } } }
读指定长度的数据到字节数组,数据从字节数组 的off处开始存放。 • public long skip(long n) :指针跳过n个字节,定 位输入位置指针的方法 • public void mark() :在当前位置指针处做一标记 • public void reset() :将位置指针返回标记处 • public void close() :关闭流
9.3 面向字符的输入/输出流
1、面向字符的输入流类层次
表9-4 类Reader的主要子类及说明
类名
构造方法的 主要参数
功能描述
CharArrayReader
字符数组 char[]
用于对字符数组中的数 据进行转换
BufferedReader
类Reader的 为输入提供缓冲的功能,
对象
提高效率
LineNumberReader 类Reader的 为输入数据附加行号 对象
break; outfile.write(b,0,byteRead); outfile.close(); } }catch(IOException e) { } } }
基本数据类型数据的读写问题
类DataOutputStream实现各种类型数据的输出处理,它 实现了DataOutput接口 • writeByte(int) • writeBytes(String) • writeBoolean(boolean) • writeChars(String) • writeInt(int) • writeLong() • writeFloat(float) • writeDouble(double) • write (String)等。
9.2 面向字节的输入/输出流
1.面向字节的输入流的类继承层次
2、 类InputStream介绍
• public int read() :读一个字节 • public int read(byte b[]) :读多个字节到字节数组 • public int read(byte[] b, int off, int len) : 从输入流
以程序中的一字符串作 为输入源,通常用于 对字符串中的数据进 行转换
LineNumberReader类的使用
例9-5 从一个文本文件中读取数据加上行号后显示。
类名
功能描述
BufferedInputS 为所装饰的输入流提供缓冲区的功能,以提高
tream
输入数据的效率
DataInputStrea 为所装饰的输入流提供数据转换的功能,可从
m
数据源读取各种基本类型的数据。
LineNumberInp 为文本文件输入流附加行号 utStream
PushbackInput 提供回压数据的功能,可以多次读同样数据 Stream
• public void write(byte b[]) :将字节数组全部写 入输出流
• public void flush() :强制将缓冲区数据写入输出 流对应的外设
• public void close() :关闭输出流
例9-3 将一个大文件分拆为若干小文件
import java.io.*; public class BigToSmall {
数据输入流(DataInputStream
• 为了实现各种基本类型数据的输入处理 • 实现DataInput接口
– readByte() – readBoolean() – readShort() – readChar() – readInt()---读整数 – readLong() – readFloat() – readDouble() – readUTF()---读字符串
3.类InputStream的子类的使用表9-2
类名
构造方法的主要 参数
功能描述
ByteArrayInpu 字节数组 tStream
以程序中的一个字节数组作 为输入源,通常用于对字节 数组中的数据进行转换。
FileInputStrea 类File的对象或 以文件作为数据源,用于实
m
字符串表示的文 现对磁盘文件中数据的读取。
DataOutputStream(file); for (int n=11;n<100;n+=2) { if (isPrime(n)&&isPrime(n+2)) {
out.writeInt(n); out.writeInt(n+2); }} out.close(); } catch (IOException e) { }; }}
SequeueInputStream 一系列 InputSt ream的 对象
将两个其他流首尾相接, 合并为一个完整的输入 流。
ObjectInputStream
InputStrea 用于从输入流读取串行化 m的对象 对象。可实现轻量级对 象持久性。
4、类FilterInputStream的常见子类表9-2
例9-1在屏幕上显示文件内容
import java.io.*; public class DisplayFile {
public static void main(String args[]) {
try { FileInputStream infile = new FileInputStream(args[0]); int byteRead = infile.read(); while (byteRead!=-1) { System.out.print((char)byteRead); byteRead = infile.read();
相关文档
最新文档