第16讲 流式输入输出和文件操作)

合集下载

C中的文件操作和输入输出流

C中的文件操作和输入输出流

C中的文件操作和输入输出流C语言是一种低级语言,对于文件的操作和输入输出流的处理是其重要的特性之一。

通过文件操作和输入输出流,我们可以读取外部文件的内容、将程序的输出保存到文件中,同时还可以创建、编辑和删除文件。

本文将介绍C语言中的文件操作和输入输出流,帮助读者更好地理解和运用这些功能。

一、文件操作文件操作是指对计算机硬盘中的文件进行读写、创建和删除的操作。

C语言提供了一系列的函数和方法,方便程序员进行文件的操作。

下面是几个常用的文件操作函数:1. fopen()函数:用于打开文件。

该函数接受两个参数,第一个参数是文件名,第二个参数是打开方式(例如,读取、写入、追加等)。

成功打开文件后,该函数会返回一个指向该文件的指针。

2. fclose()函数:用于关闭文件。

当我们不再需要使用打开的文件时,应该使用该函数关闭文件。

关闭文件可以释放系统资源,避免造成内存泄漏。

3. fread()函数:用于读取文件内容。

该函数接受四个参数,分别是指向数据的指针、每个数据的大小、要读取的数据量以及文件指针。

这样我们可以通过该函数从文件中读取指定数量的数据,并存储到指定的内存地址中。

4. fwrite()函数:用于向文件中写入内容。

该函数接受四个参数,分别是指向数据的指针、每个数据的大小、要写入的数据量以及文件指针。

通过该函数,我们可以将指定数量的数据写入到文件中。

5. fseek()函数:用于设置文件指针的位置。

该函数接受三个参数,分别是文件指针、偏移量以及起始位置。

通过使用该函数,我们可以控制文件指针的位置,实现文件的跳转和定位。

二、输入输出流输入输出流是C语言中用于处理文件读写的一种机制。

通过输入输出流,我们可以将程序的输入和输出连接到文件中,实现对文件的读写操作。

C语言中提供了标准输入输出流,分别对应于键盘输入和屏幕输出。

1. 标准输入流(stdin):标准输入流用于接收用户的输入,通常使用scanf()函数来读取输入的内容。

06-Java的流式输入输出

06-Java的流式输入输出
2
A-流式输入输出处理机制
流式处理机制
Java中所有的输入输出操作都采用流式处 Java中所有的输入输出操作都采用流式处 中所有的输入输出操作都采用流式 理机制。 理机制。 流~是指具有数据源和数据目标的字节序 是指具有数据源和数据目标的字节序 数据源 列的抽象表示。 列的抽象表示。 可以将数据写入流中, 可以将数据写入流中,也可以从流中读取 数据, 数据,实际上流中存放着以字节序列形式 表示的准备流入程序或流出程序的数据。 表示的准备流入程序或流出程序的数据。
数据 程序 数据源 数据源 输出设备 数据目标 数据目标
6
流式输入输出处理机制
输入流
要将外部的数据输入到程序中时, 要将外部的数据输入到程序中时,流中的 数据源是输入设备,数据目标是程序,这 数据源是输入设备,数据目标是程序, 个流被称为输入流(Input Stream)。 Stream)。 个流被称为输入流( 输入流
5
流式输入输出处理机制
输出流
要将程序中的数据输出到输出设备, 要将程序中的数据输出到输出设备,需将 数据以字节序列 字节序列的形式写入流中 数据以字节序列的形式写入流中 数据源是程序,数据目标是输出设备, 数据源是程序,数据目标是输出设备,这 个流被称为输出流 输出流( Stream)。 个流被称为输出流(Output Stream)。
1-Java编程概述 Java编程概述
Java
Java的流式输入输出 Java的流式输入输出 及文件处理
天津工业大学计算机系 丁 刚 teacherding@
1
Java语言程序设计 Java语言程序设计
章节内容
流式输入输出处理机制 Java的输入输出库 Java的输入输出库 文件 字符流 对象的串行化

输入输出流和文件PPT教学课件

输入输出流和文件PPT教学课件

例:Int a=20;
System.out .print(a)
System.out .println(“大家好”) //加换行
➢ 用java.text包中的NumberFormat类可以控制显 示格式,有三种方法:
NumberFormat.getNumberInstance( ) //附加逗号
NumberFormat.getCurrencyInstance( ) //货币符号
8.2 输入输出流和文件处理
8.2. 1 流的概念
➢ 流是指在计算机的输入与输出之间运动的数据 的序列。输入流代表从外设流入计算机的数据
序列,输出流代表从计算机流向外设的数据序 列。
➢ 流的最大特点是:数据的获取和发送均按数据 序列顺序进行。
➢ Java中的流分为两种(被抽象为四个类): 字节流: InputStream类和OutputStream类 字符流: Reader类和 Writer类 字符流比字节流更有效。
double x=2345.123; String s1,s2,s3;
NumberFormat n1=NumberFormat.getNumberInstance( );
NumberFormat.getPercentInstance( ) //百分号
2020/12/09
8
例:import java.io.*; import java.text.*;
Public class TestOutput{ Public static void main(String args[ ]){
➢ 通过Java的控制台类Console类
Console类不是Java的标准类库,它属于corejava包。
使用Console类时需要加:

C语言中的文件操作与输入输出流

C语言中的文件操作与输入输出流

C语言中的文件操作与输入输出流文件处理是程序设计中常见的操作之一,而在C语言中,文件操作函数和输入输出流是实现文件处理的主要手段。

本文将介绍C语言中文件操作与输入输出流的基本概念、函数和使用方法。

一、文件操作概述在C语言中,文件被看作是一系列按顺序排列的字节。

文件的打开、读取、写入和关闭都是通过相应的函数来实现的。

C语言提供了一系列的文件操作函数,其中最常用的包括:文件打开函数(fopen)、文件关闭函数(fclose)、文件读取函数(fread)、文件写入函数(fwrite)和文件定位函数(fseek)等。

二、文件打开与关闭文件的打开和关闭是文件操作的基础。

通过文件打开函数(fopen),我们可以打开一个指定的文件,并返回一个文件指针,以便后续对文件的读取和写入操作。

文件关闭函数(fclose)则用于关闭一个已打开的文件。

例如,下面的代码演示了如何打开和关闭一个文件:```c#include <stdio.h>int main() {FILE *file = fopen("example.txt", "r");if (file == NULL) {printf("文件打开失败\n");return 1;}// 对文件的读取和写入操作fclose(file);return 0;}```三、文件读取与写入文件读取与写入是文件操作中常用的功能。

C语言提供了一系列的文件读取函数和文件写入函数,可以根据不同的需求调用适当的函数来完成操作。

常用的文件读取函数包括:getchar(从标准输入读取一个字符)、fgetc(从指定文件读取一个字符)、fgets(从指定文件读取一行字符串)、fscanf(从指定文件读取格式化数据)等。

常用的文件写入函数包括:putchar(向标准输出写入一个字符)、fputc(向指定文件写入一个字符)、fputs(向指定文件写入一行字符串)、fprintf(向指定文件写入格式化数据)等。

C语言中的文件操作与输入输出流处理

C语言中的文件操作与输入输出流处理

C语言中的文件操作与输入输出流处理C语言是一种广泛使用的编程语言,而文件操作与输入输出流处理是C语言中非常重要的一部分。

在C语言中,我们可以通过文件操作来读取和写入文件,以及对文件进行各种处理。

同时,输入输出流处理也可以让我们方便地与外部文件进行交互,实现数据的输入输出。

在C语言中,文件操作主要涉及到文件的打开、关闭、读取和写入等操作。

下面我们来具体了解一下C语言中文件操作的一些常用函数:1. fopen函数:用于打开一个文件,语法为:FILE *fopen(const char *filename, const char *mode);其中,filename为文件名,mode为打开文件的模式,有"r"(只读)、"w"(写)、"a"(追加)等不同模式。

2. fclose函数:用于关闭一个打开的文件,语法为:int fclose(FILE *stream);其中,stream为打开文件所返回的指针。

3. fgetc和fputc函数:分别用于读取和写入单个字符,语法为:int fgetc(FILE *stream)和int fputc(int c, FILE *stream)。

4. fgets和fputs函数:分别用于读取和写入一行字符,语法为:char *fgets(char *str, int n, FILE *stream)和int fputs(const char *str, FILE *stream)。

5. fprintf函数:用于向文件中格式化输出数据,语法为:int fprintf(FILE*stream, const char *format, ...);其中,format为输出格式。

C语言中的输入输出流处理则是通过标准输入输出流来实现的。

通过标准输入输出流,我们可以方便地进行终端输入输出,或与外部文件进行数据交互。

下面是C语言中一些常用的输入输出流处理函数:1. scanf函数:用于从终端输入数据,语法为:int scanf(const char *format, ...);其中,format为输入格式。

C语言的文件操作与输入输出流控制

C语言的文件操作与输入输出流控制

C语言的文件操作与输入输出流控制C语言是一种广泛应用于系统编程和嵌入式开发的高级编程语言,它提供了丰富的文件操作和输入输出流控制的功能,使得程序能够与外部环境进行数据的交互和存储。

本文将介绍C语言中文件操作和输入输出流控制的相关知识。

一、文件操作在C语言中,文件是指计算机中存储数据的一种资源,可以是文本文件、二进制文件等。

文件操作是指对文件进行读取、写入、打开、关闭等操作。

1. 文件的打开与关闭在C语言中,使用文件指针来操作文件。

文件指针是一个指向文件的指针变量,通过它可以对文件进行读写操作。

文件的打开使用fopen函数,语法如下:FILE *fopen(const char *filename, const char *mode);其中,filename是文件名,mode是打开模式。

常见的打开模式有:- "r":只读模式,打开一个已存在的文本文件。

- "w":写入模式,打开一个文本文件,如果文件不存在则创建,如果文件存在则清空文件内容。

- "a":追加模式,打开一个文本文件,如果文件不存在则创建,如果文件存在则在文件末尾追加内容。

- "rb"、"wb"、"ab":对应的是二进制文件的读写模式。

文件的关闭使用fclose函数:int fclose(FILE *stream);其中,stream是文件指针。

2. 文件的读取与写入文件的读取使用fscanf函数,语法如下:int fscanf(FILE *stream, const char *format, ...);其中,stream是文件指针,format是格式控制字符串,...是要读取的变量。

文件的写入使用fprintf函数,语法如下:int fprintf(FILE *stream, const char *format, ...);其中,stream是文件指针,format是格式控制字符串,...是要写入的变量。

输入输出流和文件操作

输入输出流和文件操作

OutputStream类的子类
8.2.2 Java标准输入/输出
标准输入是从键盘等外设获得数据,标准输出是向显 示器或打印机等外设发送数据。 1. 标准输入/输出常量
public final class System extends Object { public final static InputStream in //标准输入常量 public final static PrintStream out //标准输出常量 public final static PrintStream err //标准错误输出常量 }
如果输入流结束,则返回-1。
InputStream类的子类
8.2.1 抽象字节流
2. OutputStream抽象字节输出流类
public abstract class OutputStream extends Object implements Closeable, Flushable { public abstract void write(int b) throws IOException; //写入1个字节,抽象方法 public void write(byte[] buffer) throws IOException //将字节数组写入字节流 public void flush() throws IOException//立即传输 public void close() throws IOException //关闭流 }
1. 流的定义和作用
3) 流的作用 流的目的是使数据传输独立于相关设备。 数据传输给指定设备后的操作由系统执行设备 驱动程序完成。 程序中不需关注设备实现细节。一个源程序可 以用于多种输入输出设备。

流式输入输出与文件处理

流式输入输出与文件处理

实验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。

计算机基础知识什么是输入输出(IO)操作

计算机基础知识什么是输入输出(IO)操作

计算机基础知识什么是输入输出(IO)操作计算机基础知识:什么是输入输出(IO)操作计算机是一种用于处理数据的工具,而输入输出(IO)操作是计算机与外部世界进行数据交流的方式。

通过输入,我们可以将外部的数据传递给计算机进行处理,而输出则是将计算机处理后的数据传递给外部环境。

在本文中,我们将探讨输入输出操作的基础知识。

一、输入输出(IO)的概念输入输出是计算机与外部环境进行数据交流的方式。

输入是指将外部数据传递给计算机,供计算机进行处理和分析;输出则是将计算机处理后的数据传递给外部环境,供人们观察和使用。

在计算机系统中,输入输出设备起到了极为重要的作用。

例如,键盘、鼠标和触摸屏等输入设备用于接收用户的命令和数据,显示器、打印机等输出设备则用于向用户展示计算机处理的结果。

二、输入输出的分类1. 人机交互输入输出:这种输入输出方式主要是通过外部设备与人进行交互。

例如,使用键盘输入文字、鼠标点击图标进行操作、触摸屏选择菜单等。

同时,显示器将结果输出给人们观察。

2. 设备驱动程序输入输出:这种输入输出方式是通过设备驱动程序进行的。

计算机通过设备驱动程序与各类外部设备进行通信。

例如,打印机通过打印机驱动程序与计算机通信,将计算机处理的文档输出。

3. 文件输入输出:文件是计算机中存储数据的一种形式,也是计算机与外部世界交流的一种方式。

我们可以将数据存储在文件中,进行读取和写入操作。

三、输入输出的基本操作在计算机基础中,我们了解到输入输出操作的基本函数包括读取和写入。

读取是指从外部获取数据并传递给计算机进行处理;写入则是将计算机处理的结果传递给外部。

读取函数的基本形式如下:input(data):从外部读取数据,存储在变量data中。

写入函数的基本形式如下:output(data):将变量data中的数据写入外部设备,供外部环境使用。

四、输入输出的应用输入输出操作在计算机中得到了广泛的应用。

以下是一些常见的输入输出操作应用场景:1. 数据采集:许多科学实验、气象观测等需要收集大量外部数据,通过输入输出操作,这些数据可以传递给计算机进行进一步的分析和处理。

文件输入输出流

文件输入输出流
从程序的角度来确定输入输出
输出流:写文件ofstream
(1)创建文件对象,与具体文件建立关联
ofstream fout; fout.open(“test.txt”); (2)进行写文件操作 int i=10; fout<<i; (3)关闭文件 fout.close();
ofstream fout ("test.txt");
文件打开模式
打开模式 ios::out ios::in ios::ate ios::app ios::trunc ios::nocreate ios::replace ios::binary
含义 打开以进行写入 打开以进行读取 在打开时查找到 文件结尾 追加到文件结尾 如果文件存在则删除 如果文件不存在则打开失败 如果文件已存在 则打开失败 打开一个二进制文件
打开一个文件并删除所有内容 ofstream fout("TEST.TXT"); ofstream fout("TEST.TXT",ios::out); ofstream fout("TEST.TXT",ios::out|ios::trunc);
打开一个文件并追加内容 ofstream fout("TEST.TXT",ios::app);
读写操作 文本文件:使用<<,>>运算符 二进制文件:用函数成员 get、put、read、write等
关闭文件:使用成员函数close, 如:fout.close();
打开一个文件进行二进制输出 ofstream fout("TEST.TXT",ios::binary);
检查打开是否成功 if(fout){...}或

JAVA输入输出流和文件操作

JAVA输入输出流和文件操作

JAVA输入输出流和文件操作
1、JAVA输入输出流
Java的输入/输出流机制是Java中最基本的控制机制,它是把Java 程序和外部文件和网络服务之间建立的数据传输通道,是Java程序访问来自外部资源的基本手段。

Java的输入/输出流机制是Java中最基本的控制机制,它是把Java 程序和外部文件和网络服务之间建立的数据传输通道,是Java程序访问来自外部资源的基本手段。

Java的输入/输出流机制是将不同的数据源统一到同一结构,从而使Java程序与各种外部资源(文件、网络服务)之间可以进行输入/输出操作。

普通的Java程序可以使用这些IO流来读取和写入文件,从而实现文件的操作。

Java的输入/输出流系统分为字节流和字符流两种。

字节流是用来处理二进制数据流的,可以用来处理原始数据流;而字符流是用来处理字符流的,可以用来处理文本文件。

2、JAVA文件操作
文件是操作系统中用来存储信息的基本单位,在JAVA编程中,我们使用File来操作文件,File类是java.io包中的类,它是为了访问底层操作系统提供的文件和目录的操作方法。

File类可以用来操作一些文件系统相关的信息,比如:文件名、文件大小、文件是否存在等等,我们可以使用File类来实现文件的创建、删除、复制、移动等操作。

另外,如果要实现文件的读写操作。

文件输入输出流

文件输入输出流

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

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

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

文件输入输出流的基本概念和使用方法如下: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"的文件中。

输入输出流和文件操作

输入输出流和文件操作
第12页/共41页
【例9.1】 标准输入/输出。
图9.5 标准输入过程
键盘
输入 ”abc123”
标准输入流
System.in.read() 会抛出异常
程序
字节数组 0 1 2 3 4 5 6 7 8 … 511 buffer 97 98 99 49 50 51 13 10
对应 字符 a b c 1 2 3
显示器
第14页/共41页
9.2.4 文件字节输入/输出流类
• FileInputSream类 public class FileInputStream extends InputStream { public FileInputStream(String name) throws FileNotFoundException public FileInputStream(File file) throws FileNotFoundException }
{ public void print(boolean b) public void print(char c) public void print(long l) public void print(int i) public void print(float f) public void print(double d) public void print(String s) public void print(Object obj) public void println()
public final void writeInt(int v) throws IOException //写入一 个整型
public final void writeLong(long v) throws IOException

输入输出流和文件

输入输出流和文件
——I/O异常
IO异常

– 多数IO方法在遇到错误时会抛出异常,

因此调用这些方法时必须


在方法头声明抛出IOException异常

或者在try块中执行IO,然后捕获
IOException
/
24
6.2 文件读写
写文本文件 读文本文件 写二进制文件 读二进制文件 File类 处理压缩文件 对象序列化 随机文件读写
– 通过调用close方法,可以显式关闭任何一个流,
如果流对象不再被引用,Java的垃圾回收机制
也会隐式地关闭它
/
3
6.1.1 I/O流的概念(续)
输入流
– 为了从信息源获取信息,程序打开一个输入流,程序可

从输入流读取信息

输 出 流 输出流
– 当程序需要向目标位置写信息时,便需要打开一个输出 流,程序通过输出流向这个目标位置写信息

System.in: InputStream类型的,代表标准

输入流,这个流是已经打开了的,默认状态

对应于键盘输入。
System.out:PrintStream类型的,代表标准 输出流,默认状态对应于屏幕输出
System.err:PrintStream类型的,代表标准 错误信息输出流,默认状态对应于屏幕输出
}
}
21
6.1.2 预定义的I/O流类概述(续)
——处理流
/
处理流

– 不直接与数据源或目标相连,而是基于另一个

流来构造


– 从流读写数据的同时对数据进行处理

– 例6-1中的InputStreamReader和BufferedReader都属

输入输出流及文件操作共26页

输入输出流及文件操作共26页
60、人民的幸福是至高无个的法。— —西塞 罗

谢谢!
36、自己的鞋子,自己知道紧在哪里。——西班牙
37、我们唯一不会改正的缺点是软弱。——拉罗什福科
xiexie! 38、我这个人走得很慢,但是我从不后退。——亚伯拉罕·林肯
39、勿问成功的秘诀为何,且尽全力做你应该做的事吧。——美华纳
输入输出流及文件操作
56、极端的法规,就是极端的不公。 ——西 塞罗 57、法律一旦成为人们的需要,人们 就不再 配享受 自由了 。—— 毕达哥 拉斯 58、法律规定的惩罚不是为了私人的 利益, 而是为 了公共 的利益 ;一部 分靠有 害的强 制,一 部分靠 榜样的 效力。 ——格 老秀斯 59、假如没有法律他们会更快乐的话 ,那么 法律作 为一件 无用之 物自己 就会消 灭。— —洛克
40、学而不思则罔,思而不学则殆。——孔子

输入输出流及文件操作

输入输出流及文件操作

第六章输入输出流及文件操作在Java中,应用程序所需要读入的数据和写出的数据是通过I/O操作实现的为进行数据的输入、输出操作,java中把不同的输入、输出源(键盘,文件等)抽象表述为“流”(stream)Java中的输入输出流可以分为两大类:输入流和输出流输入流:只能从中读取字节数据,而不能向其写出数据输出流:只能向其写入字节数据,而不能从中读取数据Java.io包提供了处理各种类型的流:文件流,字节流,字符流等java语言提供3种自动生成的标准流。

System.out是标准输出流System.in是标准输入流System.err是标准异常流在使用输入输出流时,我们需要根据数据格式、操作对象、随机访问能力等因素,来决定选择那种流来实现功能字节流是用来针对ISO的8位字节的读和写。

java字节I/O流的层次。

FileInputStream:一次读取一个字节。

PipedInputStream:大批量读取。

字节I/O流java字节流继承层次字节输入流所有的字节输入流,都是InputStream的子类,InputStream类包含的主要方法有:字节输入流一般来说,字节输入流的数据通常来自二进制文件,所以FileInputStream 通常作为字节输入流的操作类。

例:从文件中读取数据。

import java.io.FileInputStream;public class FileInputStreamTest {public static void main(String argv[]){//构建一个字节流对象,对象要对应文件名try {FileInputStream fin=newFileInputStream("C:/message.txt");//读取文件中含有多少个字节System.out.println(fin.available());byte b[]=new byte[50];//跳过文件中前两个字节fin.skip(2);//把文件中读取的字节放在数组b中fin.read(b);//将数组中b中的内容输出System.out.println(new String(b));fin.close();} catch (Exception e) {e.printStackTrace();}System.out.println();}}所有的字节输出流,都是OutputStream的子类,OutputStream类包含的主要方法有:import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/*** 文件拷贝* 步骤1:把文件读取到输入流中* 步骤2:输入流存入byte数组中*步骤3:建立一个输出流*步骤4:把数组中的信息一次写入输入流*/public class CopeOutputStream {public static void main(String[] args) throws IOException {FileInputStream fin;try {fin = new FileInputStream("C:/message.txt");byte[] b=new byte[fin.available()];fin.read(b);FileOutputStream fon=new FileOutputStream("c:/message1.txt");fon.write(b);fin.close();fon.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}上例中,把图片的数据一次性读入内存,这是很危险的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java语言概述
11
3.对象流 ◇ ObjectInputStream、ObjectOutputStream 4.其它帮助类 ◇ 文件处理: File、RandomAccessFile; ◇ 接口 DataInput、DataOutput、ObjectInput、 ObjectOutput;
Java语言概述
Java语言概述 10
2.字符流: 从Reader和Writer派生出的一系列类,这类流以16位 的Unicode码表示的字符为基本处理单位。 ◇ Reader、Writer ◇ InputStreamReader、OutputStreamWriter ◇ FileReader、FileWriter ◇ CharArrayReader、CharArrayWriter ◇ PipedReader、PipedWriter ◇ FilterReader、FilterWriter ◇ BufferedReader、BufferedWriter ◇ StringReader、StringWriter

Java语言概述
23

BufferedWriter类
public void newLine(); //可以输出一个新 行 public void flush(); public void close();
Java语言概述
24


【例9.9】标准输入输出 。 程序代码见StandardIO .java。运行结果如下: Enter String: abcde Abcde Enter an Integer: -12345 -12345 Enter a Double: -12345 -12345.0
Java语言概述 15
FileInputStream 和 FileOutputStream的实例

主要负责完成对本地磁盘文件的顺序输入和输 出的InputStream和OutputStream子类; 见附书例子10.1 和10.2

注意对于汉字数据的处理问题!
二、基于标准输入输出的IO操作
回顾:标准输入输出对象
PrintStream


void print(String s) Print a string. 打印一个字符串 void println() Terminate the current line by writing the line separator string. 打印字符串并且输出一个换行符
Java语言概述
13
InputStream
◇ 关闭流: close( ); //流操作完毕后必须关闭 ◇ 使用输入流中的标记: void mark( int readlimit ); //记录当前读指 针所在位置,readlimit表示读指针读出readlimit个字节 后所标记的指针位置才失效 void reset( ); //把读指针重新指向用mark方 法所记录的位置 boolean markSupported( ); //当前的流是否支持 读指针的记录功能
Java语言概述 7
Java输入输出类库继承关系
ByteArrayInputStream BufferedInputStream FileInputStream PushbackInputStream FilterInputStream LineNumberInputStream InputStream PipedInputStream DataInputStream SequenceInputStream
OutputStream
FileOutputStream
FilterOutputStream
PrintStream
PipedOutputStream
DataOutputStream
面向字节流的输入输出类层次关系图
Java语言概述
8
BufferedReader
LineNumberReader
CharArrayReader
StringBufferInputStream
ObjectInputStream
ObjectInput
DataInput ng.Object RandomAccessFile DataOutput
ObjectOutputStream
ObjectOutput
ByteArrayOutputStream BufferedOutputStream
Java语言概述 26
【例9.10】结构化数据输入输出和数据分隔 。 程序代码见TokenStandardIO .java。运行结果如下:
The number 1 person Enter name,age,salary,married(optional), please separate fields by ':„ 张三:25:3000 The number 2 person Enter name,age,salary,married(optional), please separate fields by ':„ 李四:35:10000:Y The number 3 person Enter name,age,salary,married(optional), please separate fields by ':„ 王大五:30:4000:F
Java语言概述
18
流的封装处理

为了便于流的处理,Java定义了用于处理功能 的处理流,如转流的处理。(类似于现实 中大管套小管)
标准输入(System.in) 输入缓冲 字节字符转换
程序
键盘
字节到字符转换流




InputStreamReader,OutputStreamWriter 是 字符流通向字节流的桥梁,可以在输入和输出 时进行字节流到字符流的转换 InputStreamReader(InputStream in) 创建使用默认字符集的 InputStreamReader OutputStreamWriter(OutputStream out) 创建使用默认字符编码的OutputStreamWriter
12
InputStream-字节输入流的主要方法
◇ 从流中读取数据: int read( ); //读取一个字节,返回值为所读的字节 int read( byte b[ ] ); //读取多个字节,放置到字节数组 b中,通常读取的字节数量为b的长度,返回值为实际读取 的字节的数量 int read( byte b[ ], int off, int len ); //读取len个字节, 放置到以下标off开始字节数组b中,返回值为实 际读取的字节的数量 int available( ); //返回值为流中尚未读取的字节的 数量 long skip( long n ); //读指针跳过n个字节不读,返回 值为实际跳过的字节数量
缓冲字符流BufferedReader




从字符输入流中读取文本,缓冲各个字符,从而实现 字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。大 多数情况下,默认值就足够大了。 BufferedReader(Reader in) 创建一个默认大小输入缓冲区的缓冲字符输入流。 BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流 。
流(Stream)是指计算机各部件之间的数据流动。
按照数据的传输方向,流可分为输入流与输出流,从流的 内容上划分,流分为字符流和字节流。
输入输出流
数据流分为输入流和输出流两大类。数据流是Java程序发 送和接收数据的一个通道,通常应用程序中使用输入流读 出数据,输出流写入数据,就好像数据流入到程序或从程 序中流出。
Java语言概述
6
输入输出流的类别


Java中的输入输出流可以分为两大类:输入流和 输出流。输入流是能够读取字节的对象,而输出 流是能够写字节序列的对象。最初设计的输入输 出类是面向字节流的,即能够支持8位的字节流, 分别由派生自抽象类InputStream和 OutputStream的类层次来表示。 但是随着对国际化支持的需求出现,面向字节的 流不能很好地处理使用Unicode(每个字符使用 两个字节)的数据,因此引入了派生自抽象类 Reader和Writer的类层次,用于读写双字节的 Unicode字符,而不是单字节字符。
FileWriter
PrintWriter
StringWriter
处理Unicode字符的输入输出类层次关系图 Java语言概述
9
三种类型的输入输出类
1.字节流: 从InputStream和OutputStream派生出来的一系 列类。这类流以字节(byte)为基本处理单位。 ◇ InputStream、OutputStream ◇ FileInputStream、FileOutputStream ◇ PipedInputStream、PipedOutputStream ◇ ByteArrayInputStream、 ByteArrayOutputStream ◇ FilterInputStream、FilterOutputStream ◇ DataInputStream、DataOutputStream ◇ BufferedInputStream、 BufferedOutputStream
在 Java 里,还提供了“标准输入流”和“标准错误输出 流”,分别对应于 System.in 和 System.err 。 System.out 和 System.err已经被封装成PrintStream对象,因此具有强大的 输出功能;但是 System.in 是InputStream 的一个子类对象, 输入操作功能有限,最好在使用的时候通过其他处理流进行 封装处理。 见附书例子:例10.4 注意:system.in 对象不能很好处理中文数据
相关文档
最新文档