第九章 输入输出流

合集下载

第9章输入输出流

第9章输入输出流

CharArrayReader 字符数组ቤተ መጻሕፍቲ ባይዱ入流
Reader 字符输入流
InputStreamReader 字符输入流
FilterReader 过滤器输入流
FileReader 文件输入流
PushbackReader 回压输入流
PipedReader 管道输入流
StringReader 字符串输入流
Reader类的两个常用子类
关闭输出流
l void flush()
清空输出流,使所有缓冲字节写完
l void write(byte[] b) 将数组b中的字节写到输出流
l void write(byte[] b, int off, int len)
l abstract void write(int b) 将字节b写到输出流
FileNotFoundException BufferedOutputStream 类和FileOutputStream类重写了OutputStream 类中的
write(int b)方法
9.2.3 Reader (字符输入流)类
Reader类称作字符输入流类,是一个抽象类。Reader
类为通用的输入字符流提供了一些基本方法和标准接 口
ObjectInputStream 对象输入流
InputStream 类的两个常用子类
(1)BufferedInputStream 类 当一个BufferedInputStream 类对象被创建时,就产生了一个内部缓冲数组,
因此,可以根据需要从连接的输入数据流中一次性读多个字节的数据到 内部缓冲数组中,这样可以提高读输入数据流的效率 BufferedInputStream的常用构造方法有: l BufferedInputStream(InputStream in) l BufferedInputStream(InputStream in, int size) (2)FileInputStream类 FileInputStream类主要用于文件的输入,创建的对象可以顺序地从本地机 上的文件中读数据 FileInputStream类常用的构造方法有: l FileInputStream(String name) throws FileNotFoundException l FileInputStream(File fileName) throws FileNotFoundException

输入输出流和文件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类时需要加:

输入输出流.正式版PPT文档

输入输出流.正式版PPT文档
第章输入输出流
9.1 概述
C++用流(stream)的概念描述数据的输入 输出,流是计算机中的数据从源头移动到目 的地的这种过程的抽象。
流具有很强的方向性,与输入设备相联系的 流称为输入流,与输出设备相联系的流称为 输出流,与输入输出设备相联系的流称为输 入输出流。
流操作
对流的基本操作有两种,从流中获得数 据称为提取操作,向流中添加数据称 为插入操作。C++语言用流对象来管 理流,流对象一般都与某种设备相联 系,程序员通过操纵流对象,达到控 制输入输出的目的。
c1=cin.get(); cin.get(c2); cin.get(a,21,’#’);
成员函数getline
istream& getline(char *s,int n,char ch=’\n’);
char a[80]; cin.getline(a,21,’#’);
读取控制成员函数
函数原型
9.3 输入流
istream类提供了数据流输入的功能,在程序里可 以不断地从流对象中提取数据,存入相应的变量 中。
输入时使用的istream流对象通常是cin,有4种基 本操作方式。第1种是用流提取运算符,读入基本 类型的数据;第2种是用成员函数get,读入一个 字符或者字符串;第3种是用成员函数getline, 读入一个字符串;第4种是用成员函数read,读 入一串指定数量的字符。
பைடு நூலகம்
说明
int gcount(void) const
istream& ignore(int n=1,int d=EOF)
istream& putback(char ch)
int peek(void)

第九章输入输出处理

第九章输入输出处理
对于这三个方法,若返回-1,表明流结束。
9
2. 字节流——OutputStream
write(int b)
将一个整数输出到流中(只输出低位字节,抽象)
write(byte b[])
将字节数组中的数据输出到流中
write(byte b[], int off, int len)
将数组b中从off指定的位置开始,长度为len的数据 输出到流中
本讲内容
1、I/O概述 2、I/O字节流 3、I/O字符流 4、随机访问文件
1
1. I/O概述
大部分程序都需要输入/输出处理,比如从键盘读取数 据、向屏幕中输出数据、从文件中读或者向文件中写 数据、在一个网络连接上进行读写操作等。 在Java中,把这些不同类型的输入、输出抽象为流 (Stream),而其中输入或输出的数据则称为数据流 (Data Stream),用统一的接口来表示,从而使程序 设计简单明了。
ObjectInputStream PipedInputStream SequenceInputStream StringBufferInputStream
OutputStream
ByteArrayOutputStream FileOutputStream FilterOutputStream
FilterInputStream(InputStream in); FilterOutputStream(OutputStream out);
这两个类是抽象类,构造方法也是保护方法。
15
2. 字节流——过滤流:缓冲流
类BufferedInputStream和BufferedOutputStream实现 了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O 流“捆绑”到缓冲流上,可以提高读写效率。 在初始化时,除了要指定所连接的I/O流之外,还可以 指定缓冲区的大小。缺省大小的缓冲区适合于通常的 情形;最优的缓冲区大小常依赖于主机操作系统、可 使用的内存空间以及机器的配置等;一般缓冲区的大 小为内存页或磁盘块等地整数倍,如8912字节或更小。

输入输出流

输入输出流

输入输出流是一个常把人搞晕的概念,问题出在哪儿?问题出在我们犯了习惯性思维的毛病,落入了“输入”、“输出”两词制造的陷井。

一讲到输入流,我们常常会不言而喻地把它理解为这个对象是用来读其他对象的,如把字节数组、字符串等读进来;同样,一说到输出流,常常会把它理解为,这个对象就是用来输出的,如把字节数组、字符串的内容输出来或写出来,等等。

要是这样理解,整好把它们理解错了个180度。

实际上我们首先应当把输入流和输出流分别这样理解:输入流的核心机能是把属于“自已缓冲区的”内容一个符一个符地读出来(可称为吐出来),展现给你;输出流的核心机能是把其它对象的内容一个符一个符地“写到属于自已的内存缓冲区”里去(可称为吃进去)。

下面我们来具体看一看:(一)ByteArrayInputStream(字节数组输入流)从字面上看ByteArrayInputStream是输入流,其实,我们对它的应用主要是把存放在它内部的东东(或者说把与它有联系的字节数组)一个一个字节地或成组地读(read)出来。

当我们想对一个字节数组一个字节一个字节进行过滤的时候,可以用它来实现。

使用这个类通常用以下几个步骤与方法(1)创建实例(也有的叫创建对象)。

如:byte buffer[]={'T','e','s','t'};//可以用其他方法制作数组。

ByteArrayInputStream inStream=new ByteArrayInputStream(buffer);(当然还有另外的构造方法)inStream即为实例。

这一步的作用,我们可以把它理解为inStream把buffer数组一次性地复制到自已内部的缓冲区,以后,inStream内部的各方法如read、skip、available、reset的操作对象就是这个内部缓冲区。

也就是说,我们可以认为,imStream内部有一个private(私有的)缓冲区,这个缓冲区被封装在inStream内,只有inStream的方法可以对它操作,外界是不可以直接读写这个缓冲区的。

第9章输入输出流和文件操作精品PPT课件

第9章输入输出流和文件操作精品PPT课件
* 其中pathname和child指定文件名;
* parent指定目录名,目录名可以是字符串,也可以 是File对象。
9.4.1 文件类File
例如: * = new File("my"); //在当前目录中,以指定文件名创建一个文件对象 * = new File(".",""); //目录也是以文件形式保存的,称为目录文件,创建 一个目录文件对象,表示当前目录 * = new ,"my"); //在dir目录中,以指定文件名创建一个文件对象
文件或目录的路径名由“/“或者“\“分割; * = new File("C:",""); //表示C盘根目录 * = new File("C:/",""); * = new File("C:\\","");
9.4.1 文件类File
2. File类提供的方法
创建一个文件对象后,可以用File类提供的方法来 获得文件的属性信息。
9.1.1 操作系统中的文件和目录概念
1. 文件与文件系统 2. 目录结构与文件检索 3. 文件的逻辑结构
9.1.1 操作系统中的文件和目录概念
4. 文件的存取方法
5. 文件的使用
9.1.2 程序设计语言中的文件类型
1. 文件类型概念
2. 文件与数组的区别
9.1.3 流的概念
1. 流的定义和作用
9.2.3 Java的标准输入/输出
【例9.1】 标准输入/输出.
9.2.4 文件字节输入/输出流类
1. 类
2. 类
9.2.4 文件字节输入/输出流类

第9讲输入输出流(上)-new_144303834

第9讲输入输出流(上)-new_144303834
输出操作时,程序对象数据先预存在缓存区中,直到满或者endl, 输出操作时,程序对象数据先预存在缓存区中,直到满或者endl, endl 缓冲区的前部数据送到显示器或硬盘; 缓冲区的前部数据送到显示器或硬盘; 输入时,键盘键入的数据先预存到缓冲区,当按回车键, 输入时,键盘键入的数据先预存到缓冲区,当按回车键,才写入到 程序中对象
ostream operator << (int ); //用于向输出流插入一个 用于向输出流插入一个int 用于向输出流插入一个 ostream operator << (float ); //用于向输出流插入一个 用于向输出流插入一个float 用于向输出流插入一个 ostream operator << (char ); //用于向输出流插入一个 用于向输出流插入一个char 用于向输出流插入一个 ostream operator << (char *); //用于向输出流插入一个字符串 用于向输出流插入一个字符串
如果想将“ ” 如果想将“<<”和“>>”用于自己声明的类型的数据,必 ”用于自己声明的类型的数据, 须自己的程序中用对“ ” 须自己的程序中用对“<<”和“>>”进行重载,你还记得 ”进行重载, 格式吗? 格式吗? istream & operator >> (istream &,自定义类 &); 自定义类 9 ostream & operator << (ostream &,自定义类 &); 自定义类
8
C++的标准I/O流 的标准I/O 9.2 C++的标准I/O流

C语言的输入输出流

C语言的输入输出流

C语言的输入输出流C语言作为一种面向过程的编程语言,其输入输出流(Input/Output Stream)是非常重要的概念。

输入输出流允许我们在程序中与用户交互,从用户处接收输入并向用户展示输出。

本文将探讨C语言中的输入输出流相关的概念和函数,以及如何在程序中使用它们。

一、标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)C语言中,有三个预定义的输入输出流,分别是标准输入流(stdin)、标准输出流(stdout)和标准错误流(stderr)。

它们分别被定义为文件指针,可以通过它们来进行输入和输出操作。

1. 标准输入流(stdin)标准输入流(stdin)用于从用户处接收输入。

在C语言中,我们可以使用`scanf()`函数来从标准输入流读取输入数据。

```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("您输入的整数是:%d\n", num);return 0;}```在这个例子中,`scanf()`函数用于从标准输入流(stdin)中读取一个整数,并将其存储到变量`num`中。

然后,我们使用`printf()`函数将输入的整数输出到标准输出流(stdout)上。

2. 标准输出流(stdout)标准输出流(stdout)用于向用户展示输出。

在C语言中,我们可以使用`printf()`函数向标准输出流打印输出。

```c#include <stdio.h>int main() {printf("Hello, world!\n");return 0;}```在这个例子中,`printf()`函数用于向标准输出流(stdout)打印字符串"Hello, world!",并在字符串的末尾添加一个换行符。

第9章:输入和输出流

第9章:输入和输出流

9.1.2 流对象
1. 建立流对象
创建输入输出流对象的常用构造方法用2种,如:
FileInputStream (String name), 直接指定的文件名创建输入流 FileInputStream (File filename), 用文件对象创建输入流。
创建FileOutputStream类、FileReader类和FileWriter类的 流对象与FileInputStream完全类似。
(1) File (String s),由 s 确定 File 对象的文件名。
(2) File (String directory , String s) s确定文件名。
9.1.2 流对象
Java 程序的输入和输出流称为流对象, 输入输出流由文件名 或 File 对象创建。

使用以上三个方法时,如果在读数据之前,已到达输入的末端位置,没有 读入一个字节数据,用返回-1 表示流在读之前已结束。
9.1.2 流对象
2. 输入流的常用方法
FileReader类包含下面用于读字符和字符数组的方法:
(1)int read(), 从输入流读取下一个字符。 返回的整数即该字符的 Unicode值。如果读前已到流的末尾,则返回-1。 (2)int read (char b[]), 从输入流读取长度为 b.length 的字符数据,写入 到字符数组 b,并返回实际所读取的字符数。 (3)int read (char b[], int off, int len),从数据流中读取长度为 len 的字 符数据,写入到字符数组 b 中从下标 off 开始的数组元素中,并返回实际读 取的字符数。
BufferedWriter 类是提供缓冲式输出的类。

输入输出流

输入输出流

PPT文档演模板
输入输出流
2.3 查询文件属性
String s="e:"+File.separator+"Thread1.java"; File file=new File(s); String exists = file.exists() ? "Yes" : "No"; String canRead = file.canRead() ? "Yes" : "No"; String canWrite = file.canWrite() ? "Yes" : "No"; String isFile = file.isFile() ? "Yes" : "No"; String isHid = file.isHidden() ? "Yes" : "No"; String isDir = file.isDirectory() ? "Yes" : "No"; String isAbs = file.isAbsolute() ? "Yes" : "No";
PPT文档演模板
输入输出流
P261, 例4 Example20_4 TextArea text; BufferedReader in; Button button; FileReader file; EWindow() {
super("流的读取"); text=new TextArea(10,10); text.setBackground(Color.cyan); try { File f=new File("E:\\lanhong\\", "a.txt");

微机原理 第九章 面向系统的输入 输出接口

微机原理  第九章  面向系统的输入 输出接口

青岛理工大学琴岛学院
9.2 Intel 可编程中断控制器8259A
中断控制器8259A的功能:


可管理8个中断源电路的中断,并能对其进行 优先级管理。 用9片8259A可组成主从式中断系统,管理64 个中断源电路的中断,并能对其进行优先级管 理。 对中断源有屏蔽或允许申请中断的操作。 能自动送出中断类型号,使CPU迅速找到中断 服务程序的入口地址。
专用 中断向量 (5 个)
00008H 00004H
0 号向量(除法错)
00000H
CS IP
16 位
青岛理工大学琴岛学院
硬件中断



非屏蔽中断的类型号为2,所以非屏蔽中断的入 口地址放在0段的0008H、0009H、000AH和 000BH四个单元中; 非屏蔽中断一般用来处理系统的重大故障,比如 系统掉电处理常常通过非屏蔽中断处理程序执 行; 非屏蔽中断子程序一般采用的措施:
青岛理工大学琴岛学院
9.2.1 8259A结构及引脚功能
28条引脚,双列直插式 封装 分为四组使用
8259A
青岛理工大学琴岛学院
结构框图
INTA INT D7~D0 数据总线 缓冲器 控制电路
RD WR A0 CS
/写 读读 /写 控制 控制逻辑 电路 中断 服务 寄存器 ISR 优先权 判别 电路 PR 中断 请求 寄存器 IRR
第9章 面向系统的输入/输出接口
青岛理工大学琴岛学院
中断系统

中断:是指CPU在执行当前程序的过程中,由 于某种随机出现的外围设备的请求,使得CPU 暂时停止正在执行的程序(即中断),转去执 行为外围设备服务的程序。当为外围设备服务 的程序执行完后,CPU再返回到暂时停止的程 序处(即断点),继续执行原来的程序,这就 是通常所说的外部中断。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

import java.io.*;
public class FileInputStreamDemo{
public static void main(String args[]){
int b; byte bom[]=new byte[25]; try{
字节流的存储,需 要字节数组byte[]
File f=new File("FileDemo.java");
Reader类的常用方法
int read() int read(char[] ch) int read(char[] b,int off,int len) long skip(long n) void mark(int readlimite) void reset() boolean markSupported() void close()
20
9.2.2 缓冲字节流
缓冲字节流BufferedInputStream、 BufferedOutputStream 在基础字节流的基础上建立一个缓冲区,来提 高字节流处理的效率
BufferedInputStream(InputStream in) BufferedInputStream(InputStream in,int size) BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out,int size) read()、write() flush()
21
9.2.2 打印流
PrintStream:将java的任何数据类型转换为 字符串类型输出 PrintStream(OutputStream out) PrintStream(OutputStream out,Boolean autoFlush) print() println()
22
9.3 字符输入/输出流
try{
System.out.println(“input one line words");
b=System.in.read(buffer);
FileOutputStream writefile=
new FileOutputStream(("“lliinnee..ttxxtt"”),;true)
writefile.write(buffer);}
数据流是指所有的数据通信通道 在java中有关流的操作使用java.io.*
文件

程序
点 网络端点
数据流
文件

程序

终端
网络端点
3
9.1.2 输入/输出类
输入输出是相对程序来说的,程序扮演两个角 色:源和目的。
输入流:代表从外设流入程序的数据序列;
输出流:代表从程序流向外设的数据序列。
字节流:在输入输出过程中以字节为单位。
File f=new File(“c:/dataout.dat”); FileOutputStream fos=new FileOutputStream(f);
13
9.2.1文件输入/输出字节流
(4)向输出流写信息 void write(int b):将指定的整型数据b的 低字节写入输出流。 void write(byte[] b):把字节数组b中的数 据写入输出流。 void write(byte[] b,int off,int len):把字 节数组b中从off开始的len个字节写入输出 流。
9
9.2 字节输入/输出
FileInputStream/ FileOutputStream DataInputStream/ DataOutputStream BufferedInputStream/BufferedOutputStream
10
9.2.1文件输入/输出字节流
FileInputStream (1)创建输入流
InputStreamReader(InputStream in) InputStreamReader(InputStream in,String enc) OutputStreamWriter(OutputStream out) OutputStreamWriter(OutputStream out,String enc) read() write() close() String getEncoding()
new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String inputLine = br.readLine();
System.out.println(inputLine);
}
}
25
9.3.2 文件输入/输出流
19
9.2.2 数据流
DataInputStream,DataOutputStream
构造方法: DataInputStream(InputStream in) DataOutputStream(OutputStream out) 必须和一个输入类或输出类的对象联系起来! 主要方法P155 表9-1
26
import java.io.*; class FileW{
public static void main(String args[]){ String s= "How do you do!\r\n I like Java!\r\n"; FileWriter fw; try{ fw=new FileWriter("test.txt");
FileInputStream fis=new FileInputStream(myfile);
11
9.2.1文件输入/输出字节流
(2)读取文件信息 int read( ):从输入流中读取一个字节,返 回字节值。 int read(byte[ ] b):从输入流中读取,写 入b。返回实际读取字节数。 int read(byte[ ] b, int off, int len):从输 入流中读取len个数据,写入b,从索引off 开始。返回实际读取字节数。
FileInputStream in=new FileInputStream(f);
while((b=in.read(bom))!=-1){
String s=new String(bom,0,b);
System.out.print(s);}
in.close();}
catch(IOException e){
fw.write(s); fw.close(); }catch(IOException e){} } }
27
9.3.3 缓冲字符输入流
缓冲字符流BufferedReader、BufferedWriter 在基础字符流的基础上建立一个缓冲区,来提 高字符流处理的效率 BufferedReader(Reader in) BufferedWriter(Writer out) read()、write() readLine()、newLine()
24
举例:
import java.io.*;
public class InputStreamReaderDemo {
public static void main (String[] args)throws IOException
{
System.out.println("Enter");
InputStreamReader isr =
12
9.2.1文件输入/输出字节流
FileOutputStream 创建输出流
FileOutputStream(String name)用文件名 name创建流对象
FileOutputStream fos=new FileOutputStream(“c:/dataout.dat”);
FileOutputStream(File file)使用文件对象 file创建流对象
FileInputStream(String name)用文件名 FilneIanpmuteS创tre建am流fis对=n象ew。FileInputStream(“c:/data.txt”);
FileInputStream(File file)用文件对象file Fil创e m建yfi流le=对ne象w F。ile(“c:/data.txt”);
InputStreamReader/ OutputStreamWriter FileReader/ FileWriter BufferedReader/ BufferedWriter
23
9.3.1 输入/输出字符流
InputStreamReader、OutputStreamWriter 以字节方式表示的流转换为特定平台上的 字符表示的流
catch(IOException e){
System.out.println("Error"+e);
}
}}
18
9.2.2 过滤流
字节流FileInputStream类和FileOutputStream 类只提供纯字节或字节数组的输入/输出。 如果要进行特殊数据的输入/输出,如基本 数据类型的输入/输出,则要通过过滤流 FilterInputStream类和FileterOutputStream类中 的各种子类。过滤流提供了同步机制,即 某一时刻只有一个程序段访问输入/输出流。
8
9.1.3 标准输入/输出
System类提供了访问标准输入/输出设备的 功能。System类有3个类变量: 标准输入
public static final inputStream in
标准输出
public static final printStream out
相关文档
最新文档