第10讲输入输出流与文件操作
掌握计算机中的输入输出操作
掌握计算机中的输入输出操作计算机是现代社会中不可或缺的一部分,它可以实现各种功能,从处理大量数据到提供娱乐和媒体内容。
要完全掌握计算机使用的技能,了解输入输出操作是至关重要的。
本文将介绍计算机中的输入输出操作的概念、方法和应用。
一、什么是计算机中的输入输出操作计算机中的输入输出操作(Input/Output,简称I/O)是指计算机与外部设备之间的数据交互过程。
用户可以通过输入设备向计算机传输数据,而计算机则通过输出设备将结果或信息呈现给用户。
输入输出操作是计算机系统中的基本组成部分,它使得计算机能够与外部世界进行交流与互动。
二、计算机中的输入操作1. 键盘输入:键盘是计算机最基本的输入设备之一,它通过按键的方式向计算机输送数据。
用户可以通过键盘输入文字、数字、符号等信息。
2. 鼠标输入:鼠标可以通过手指的移动和点击操作向计算机传递指令和数据。
鼠标可以控制光标在计算机屏幕上进行定位、选中和操作。
3. 扫描仪输入:扫描仪可以将纸质文件或图片等物理形式的信息转换为计算机能够理解的数字数据。
扫描仪广泛应用于文档数字化、图像处理等领域。
4. 传感器输入:计算机可以通过传感器接收来自外部环境的信息,如温度、湿度、光强等。
传感器可以帮助计算机实现自动化控制和监测。
三、计算机中的输出操作1. 显示器输出:显示器是计算机输出设备的主要形式,它可以通过屏幕显示文字、图像和视频等信息。
显示器通常分为液晶显示器、LED显示器等多种类型。
2. 打印机输出:打印机可以将计算机中的文字、图像等信息输出到纸质媒体上。
打印机的种类有很多,包括喷墨打印机、激光打印机等。
3. 喇叭输出:计算机可以通过喇叭或音箱输出声音,实现音频播放和多媒体应用。
音频输出常用于音乐、电影和游戏等场景。
4. LED指示灯输出:计算机设备上的LED指示灯可以向用户显示设备的工作状态,如电源指示灯、硬盘运行指示灯等。
四、输入输出操作的应用1. 文字处理:通过键盘输入文字,然后通过显示器输出文字,实现对文档的编辑、存储和分享等功能。
《C++程序设计》电子教案第10章 流类库与输入输出
C++中所有流都是相同的 , 但文件可以不同 。 中所有流都是相同的, 但文件可以不同。 中所有流都是相同的 使用流以后, 使用流以后 , 程序用流统一对各种计算机设备 和文件进行操作,使程序与设备、 和文件进行操作 , 使程序与设备 、 程序与文件 无关,从而提高了程序设计的通用性和灵活性。 无关 , 从而提高了程序设计的通用性和灵活性 。 也就是说, 也就是说 , 无论与流相联系的实际物理设备差 别有多大,流都采用相同的方式运行。 别有多大 , 流都采用相同的方式运行 。 这种机 制使得流可以跨越物理设备平台, 制使得流可以跨越物理设备平台 , 实现流的透 明运作,而与实际的物理设备无关。例如, 明运作 , 而与实际的物理设备无关 。 例如 , 往 显示器上输出字符和向磁盘文件或打印机输出 字符,尽管接受输出的物理设备不同, 字符 , 尽管接受输出的物理设备不同 , 但具体 操作过程是相同的。 操作过程是相同的。
返回本节
10.2 格式化 格式化I/O
10.2.1 10.2.2 10.2.3 10.2.4 ios类中的枚举常量 类中的枚举常量 使用ios成员函数 使用 成员函数 使用I/O操作符 使用 操作符 检测流操作的错误
返回首页
10.2.1 ios类中的枚举常量 类中的枚举常量
在根基类ios中定义有三个用户需要使用的枚举类型, 在根基类 中定义有三个用户需要使用的枚举类型,由 中定义有三个用户需要使用的枚举类型 于它们是在公用成员部分定义的, 于它们是在公用成员部分定义的,所以其中的每个枚举类 型常量在加上ios::前缀后都可以为本类成员函数和所有外 型常量在加上 前缀后都可以为本类成员函数和所有外 部函数访问。 部函数访问。 在三个枚举类型中有一个无名枚举类型, 在三个枚举类型中有一个无名枚举类型,其中定义的每个 枚举常量都是用于设置控制输入输出格式的标志使用的。 枚举常量都是用于设置控制输入输出格式的标志使用的。 该枚举类型定义如下: 该枚举类型定义如下: enum { skipws,left,right,internal,dec,oct,hex,sh owbase,showpoint, uppercase,showpos,scientific,fixed,unitbuf, stdio };
Java自学第10期——File类与IO流(输入输出流、处理流、转换流、缓冲流、Prope。。。
Java⾃学第10期——File类与IO流(输⼊输出流、处理流、转换流、缓冲流、Prope。
1、IO简介IO(输⼊输出)通过java.io包下的类和接⼝来⽀持,包下包括输⼊、输出两种IO流,每种输⼊输出流⼜可分为字符流和字节流两⼤类。
2、File类File类是io包下与平台⽆关的⽂件和⽬录,File能新建、删除、重命名⽂件和⽬录,不能访问⽂件本⾝,后者需要使⽤输⼊输⼊流。
2.1 构造⽅法File类的构造⽅法:File(File parent, String child) 参数:⽗路径,⼦路径根据 parent 抽象路径名和 child 路径名字符串创建⼀个新 File 实例。
File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建⼀个新 File 实例。
File(String parent, String child)根据 parent 路径名字符串和 child 路径名字符串创建⼀个新 File 实例。
File(URI uri)通过将给定的 file: URI 转换为⼀个抽象路径名来创建⼀个新的 File 实例。
2.2 静态⽅法File类静态⽅法:static String pathSeparator()与系统有关的路径分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char pathSeparatorChar()与系统有关的路径分隔符。
static String separator()与系统有关的默认名称分隔符,为了⽅便,它被表⽰为⼀个字符串。
static char separatorChar()与系统有关的默认名称分隔符。
2.3 常⽤⽅法:2.3.1 获取相关public String getAbsolutePath()返回此File的绝对路径名字符串。
public String getPath()将此File转换为路径名字符串。
public String getName()返回由此File表⽰的⽂件或⽬录的名称。
C语言文件操作与输入输出
C语言文件操作与输入输出随着计算机科学和编程的不断发展,文件操作和输入输出(I/O)是编程中非常重要的方面之一。
C语言作为一种广泛应用于系统软件和嵌入式开发的高级编程语言,也提供了一系列的函数和库来处理文件操作和输入输出。
本文将介绍C语言中的文件操作以及输入输出的相关知识。
一、文件概念及文件操作1. 文件概念在计算机领域中,文件是用于存储和组织数据的一种重要方式。
可以将文件看作是一种包含了数据的序列,这些数据可以是文本、图像、音频等形式。
在C语言中,文件以字节流的形式进行读取和写入。
2. 文件操作函数C语言提供了丰富的文件操作函数,用于打开、关闭、读取和写入文件。
下面是一些常用的文件操作函数:- fopen():用于打开文件,并返回一个指向该文件的指针。
- fclose():用于关闭文件。
- fgetc():用于从文件中读取一个字符。
- fputc():用于向文件中写入一个字符。
- fgets():用于从文件中读取一行文本。
- fputs():用于向文件中写入一行文本。
- fread():用于从文件中读取一定数量的数据块。
- fwrite():用于向文件中写入一定数量的数据块。
3. 文件打开模式在使用fopen()函数打开文件时,我们需要指定文件的打开模式。
常见的文件打开模式有:- "r":只读模式,用于读取文件的内容。
- "w":写入模式,如果文件不存在则创建文件,如果文件已存在则清空文件内容。
- "a":追加模式,用于向文件末尾追加内容。
- "rb":二进制只读模式,用于读取二进制文件。
- "wb":二进制写入模式,用于写入二进制文件。
二、输入输出(I/O)1. 标准输入输出C语言提供了三个标准的文件指针,它们分别是stdin、stdout和stderr。
它们对应于标准输入、标准输出和标准错误输出。
C++的输入和输出流详解
C++的输⼊和输出流详解⽬录输⼊和输出流标准输⼊流⼩案例标准输出流⽂件读写总结输⼊和输出流从键盘输⼊数据,输出到显⽰器屏幕。
这种输⼊输出称为标准的输⼊输出,简称标准I/O。
从磁盘⽂件输⼊数据,数据输出到磁盘⽂件简称⽂件I/O。
对内存中指定的空间进⾏输⼊输出,通常指定⼀个字符数组作为存储空间(存储任何信息),称为字符串输⼊输出,简称为串I/O缓冲区:⽆论是输⼊还是输出都是存在缓存区的。
标准输⼊流常⽤的成员函数1,cin.get()获取⼀个字符char c = cin.get();使⽤cin.get()可以家当缓冲区中的换⾏符拿⾛。
注意返回值是什么类型的,拿⾛的数据再输出的时候就是什么类型。
2,cin.get(两个参数)获取字符串参数是字符串数组名和个数使⽤cin.get(两个参数)那字符串的时候,换⾏符\0会遗留在缓冲区中。
char buf[100] = {0};cin.get(buf, 100);cout << buf<< endl;只满⾜字符数组,且输出的字符个数总⽐第⼆个参数少1.(原因:字符数组最后⼀个字符是不可见字符’\0’)3,cin.getline()获取字符串接收⼀个字符串并输出和cin.get(两个参数)相似,不会将换⾏符加⼊字符串,但是也不会留在缓冲区中,⽽是直接扔掉。
char buf[100] = {0};cin.getline(buf, 100);cout << buf << endl;可以有第三个参数,就是终⽌位置(⼀个字符,不包括这个字符)4,cin.ignore()忽略⼀个字符括号中可以填⼊参数,参数就是忽略字符的个数。
默认是⼀个。
cin.ignore();char c = cin.get();//abcout << c << endl;//b,将a忽略了5,cin.peak()偷窥char c = cin.peek();cout << c << endl;//achar m = cin.get();cout << m << endl;//a缓冲区中,输⼊了⼀个a,然后cin.peek()只是看了⼀眼,并没有拿⾛,所以调⽤cin.get()的时候可以直接从缓冲区中拿。
输入和输出处理PPT课件
第8页/共23页
FileReader和FileWriter类 由于InputStreamReader和OutputStreamWriter字符流类在创建
流类的对象时必须以一个字节流作为原始的数据流来打开文件。为了能够 直接将一个具体的文件名的文件直接转换为字符流类的对象,在java.io 包中还为程序员提供了InputStreamReader和OutputStreamWriter字 符 流 类 的 两 个 子 类 F i l e Re a d e r 和 F i l e W r i t e r.
第13页/共23页
FileInputStream类
• 下列3种方法可创建FileInputStream对象: FileInputStream(File file) FileInputStream(FileDescription fdObj) FileInputStream(String name) • 在读文件时有几个必要流程如下: 使用文件输入流读取文件夹 处理I/O异常 从输入流中读取字节 关闭流
• 2. 读入和写出字符 • 3. 获取当前编码方式 • 4. 关闭流
第7页/共23页
BufferedReader和BufferedWriter • 为提高字符流的处理效率,可以采用缓冲机制。JDK引入了 BufferedReader和BufferedWriter类,用来对字符流进行成批的处理。 其中的方法readLine()是读出一行字符,而newLine()则是写入一行字符, 由于提供缓冲机制,把任意的输入流或输出流“捆绑”到缓冲流上将获得 性能的提高,同时也可以在创建缓冲流对象进设置缓冲区的大小。
第21页/共23页
串行化的注意事项
C语言第10章对文件的输入输出 ppt课件
PPT课件
11
10.1.1 什么是文件
➢从C程序的观点来看,无论程序一次读写 一个字符,或一行文字,或一个指定的数 据区,作为输入输出的各种文件或设备都 是统一以逻辑数据流的方式出现的。C语 言把文件看作是一个字符(或字节)的序 列。一个输入输出流就是一个字符流或字 节(内容为二进制数据)流。
PPT课件
20
10.1.3 文件的分类
ASCII形式
00110001 00110000 00110000 00110000 00110000
(1) (0) (0) (0) (0)
二进制形式
00000000 00000000 00100111 00010000
(10000)
PPT课件
21
10.1.4 文件缓冲区
的temp子目录下面
PPT课件
15
10.1.2 文件名
➢文件路径表示文文件件在名外部存储设备中的位 置。如:
D: \CC\temp\file1.dat 表示file1.dat文件存放在D盘中的CC目录下
的temp子目录下面
PPT课件
16
10.1.2 文件名
➢文件路径表示文命 识件名 符在规 的外则 命部遵 名存循 规储标 则设备中的位 置。如:
➢“文件”指存储在外部介质上数据的集合
一批数据是以文件的形式存放在外部介质上的 操作系统是以文件为单位对数据进行管理 想找存放在外部介质上的数据,先按文件名找
到所指定的文件,然后再从该文件读数据 要向外部介质上存储数据也必须先建立一个文
件(以文件名作为标志),才能向它输出数据
Java 程序设计基础第10章 Java语言的输入输出与文件处理
8
10.2.1 基本的输入输出流
OutputStream类常用的方法及功能见教材表 10.2。 由于OutputStream是抽象类,所以程序中创 建的输出流对象一般是OutputStream某个子 类的对象,通过调用该对象继承的write() 方法就可以实现对相应外设的输出操作。
11
} 用FileInputStream 、 FileOutputStream来实现对二进制图 像文件的复制。 //filename:App10_2.java 读写二进制文件 import java.io.*; public class App10_2 { public static void main(String[] args) throws IOException { FileInputStream fi=new FileInputStream("d:\\cgj\\风景.jpg"); FileOutputStream fo=new FileOutputStream("d:\\cgj\\风景1.jpg"); System.out.println("文件的大小="+fi.available()); byte[] b=new byte[fi.available()]; fi.read(b); fo.write(b); System.out.println("文件已被拷贝并被更名"); fi.close(); fo2.2 输入输出流的应用
文件输入(FileInputStream)输出流 (FileOutputStream )主要负责完成对本地磁盘文 件的顺序输入与输出操作。 FileInputStream类的对象表示一个文件字节输入 流,从中可读取一个字节或一批字节。 FileOutputStream类的对象表示一个字节文件输 出流,可向流中写入一个字节或一批字节。在生 成该类的对象时,若指定的文件不存在,则创建 一个新的文件,若已存在,则清除原文件的内容。 FileInputStream类和FileOutputStream类的构造 方法见教材表10.3和10.4。
C语言开发基础教程(Dev-C++) 第10章 文件操作
✎
10.3.2 单行读写文件
2、fputs()函数
FILE *fp;
fp = fopen("D:\\test.txt","r+"); //以读写模式打开文件
fputs("China",fp);
✎
10.1.2 文件
总体来说,二进制文件较小,生成的速度 快,加载的速度也快,但文件内容往往需 要解析才可读。文本文件相对较大,生成 与加载的速度比二进制文件要慢,但文本 文件无需任何转换就可以看到其内容。
✎
10.1.3 文件指针
在C语言中,所有的文件操作都必须依靠指针来完成,因此如果要对文件 进行操作,必须先定义指向文件的指针,然后通过文件指针完成对文件 的操作。 文件指针的定义格式如下: FILE *变量名; FILE *fp; //定义文件指针fp
✎
10.2 文件的打开和关闭
文件正常打开时,函数返回指 向该文件的文件指针;文件打 开失败时,函数返回NULL。一 般在调用该函数之后,为了保 证程序的健壮性,会进行一次 判空操作。
FILE* fp;
//定义文件指针
fp=fopen(“D:\\test.txt”,“r”);
if(fp==NULL) //判空操作
程序
内存 输出文件缓冲区
输出
输出
输入 输入文件缓冲区 输入
磁盘
✎
10.2 文件的打开和关闭
文件最基本的操作就是打开和 关闭,在对文件进行读写之前, 需要先打开文件;读写结束之 后,则要及时关闭文件。
✎
10.2 文件的打开和关闭
1、打开文件 fopen()函数用于打开一个文件。 FILE* fopen(char* filename,char* mode); 返回值类型FILE*表示该函数返回值为文件指针类型;参数filename用于 指定文件的绝对路径,即用来确定文件包含路径名、文件名主干和扩展名 的唯一标识;参数mode用于指定文件的打开模式,函数的返回值为一个 文件类型的指针,如果文件打开失败,则返回空指针。
程序编辑中的文件操作和输入输出
程序编辑中的文件操作和输入输出文件操作和输入输出是程序编辑过程中的关键环节,它们负责与外部文件或用户进行数据交互。
良好的文件操作和输入输出设计可以提高程序的可用性和灵活性。
本文将介绍文件操作和输入输出在程序编辑中的重要性,并讨论常用的文件操作函数和输入输出方法。
一、文件操作文件操作指的是对外部文件进行读取、写入、修改等操作。
在程序编辑过程中,我们经常需要与文件进行交互,读取文件中的数据并根据需求进行处理。
常见的文件操作函数有:1. 打开文件:使用open()函数打开指定的文件,并返回文件对象。
在打开文件时,需要指定文件的路径、打开模式等参数。
2. 读取文件内容:使用read()函数,可以一次性将整个文件内容读取到内存中。
也可以使用readline()函数逐行读取文件内容,或使用readlines()函数一次性将所有行读取到一个列表中。
3. 写入文件:使用write()函数可以将指定的内容写入文件中。
写入文件时,需要使用“w”或“a”模式打开文件,分别表示覆盖原内容和追加内容。
4. 关闭文件:使用close()函数关闭文件,释放文件资源。
在文件操作完成后,应该及时关闭文件,防止资源浪费。
二、输入输出输入输出是程序与用户进行交互的重要手段,可以实现程序的灵活性和可操作性。
常见的输入输出方法有:1. 标准输入输出:程序可以通过标准输入流(stdin)接收用户输入的数据,通过标准输出流(stdout)向用户输出结果。
可以使用input()函数读取用户的输入,并使用print()函数输出结果。
2. 文件输入输出:程序还可以通过文件进行输入输出。
通过读取外部文件中的数据作为输入,或将程序处理结果写入外部文件,可以实现更灵活的数据交互。
3. 命令行参数:除了标准输入输出和文件输入输出外,程序还可以通过命令行参数进行输入输出。
通过在命令行中传入参数,程序可以获取相应的输入数据,并将处理结果输出到命令行或指定文件中。
C++文件输入输出流
C++文件输入输出流文件操作在操作系统的底层中十分复杂。
然而,C++已经为我们做了文件操作的绝大部分工作。
程序员只要以流的概念来实施文件操作即可。
文件有两种,一种是文本文件,其内容总是与字符码表(如ASCII码)对应。
另一种是二进制文件,可以将内容看成0/1串。
本次课我们只讨论C++中文本文件的读写。
一、文件输入流类ifstreamI ifstream是文件输入流类的类名。
定义一个该类的对象,即可将该对象和一个文件建立联系。
例如,ifstream fin(“a.txt”)表示定义一个文件输入流类的对象fin,并将该对象与当前目录下的a.txt文件建立联系,以后可以用该对象从a.txt中读取数据。
【例1 按行读取一个文本文件的所有内容,并输出到屏幕。
】#include <iostream>#include <fstream> //使用ifstream类需要包含头文件fstream#include <string> //使用string类需要包含头文件stringusing namespace std;int main(){ifstream fin("in.txt"); //默认打开文本文件string str;while (getline(fin, str)){cout<<str<<endl;}return 0;}getline(fin, str)表示从输入文件流中读入一行数据,放入string类型的变量str 中。
由于整行整行地读入,读入到str中时,文件中的每个换行符都被丢掉了。
为了照文件原样输出,在cout流上输出str的同时,还要再补上一个回车符。
许多输入/输出语句都能返回操作状态(true或false),例如if (cin>>a)cout<<a; //若读入失败,则跳过cout<<a;if (getline(in, str)cout<<str; //若读入失败,则跳过cout<<str;if (cin)cin>>a; //若文件流状态正常,则输入所以在循环读入数据时,常常将读入操作放在循环的条件判断上,这样既省事,又明白。
第10章 文件
不能用“r”方式打开一个并不存在的文件。
(2) 用“w”方式打开的文件只能用于向该文件写数据 (即输出文件),而不能用来向计算机输入。
如果原来不存在该文件,则在打开文件前新建立一 个以指定的名字命名的文件。 如果原来已存在一个以该文件名命名的文件,则在 打开文件前先将该文件删去,然后重新建立一个新 文件。
i、t的值按%d和%6.2f格式写入fp所指文件 fscanf( fp,”%d,%f ”,&i,&t);
将fp所指文件中的整数如3送给 i 实数 如 4.5 送给 t
四、数据块读写函数(fread()和fwrite())
fread (buffer,size,count,fp); 从指定文件读取数据项 fwrite (buffer,size,count,fp); 把数据项写到指定文件 文件型指针
定义文件型指针变量
FILE
*fp;
fp是一个指向FILE类型结构体的指针变量。
使fp指向某一个文件的结构体变量并访问该文件。
如果有n个文件,一般应设n个指针变量,使它们分 别指向n个文件,以实现对文件的访问。
FILE fp1
*fp1,*fp2,*fp3; fp2 fp3
文件f1的 文件信息区
第十章 对文 件的输入输出
主要内容
10.1 C文件的有关基本知识
10.2 打开与关闭文件
10.3 顺序读写数据文件
10.4 随机读写数据文件
10.5 文件读写的出错检测(自学)
10.1
C文件的有关基本知识
文件输入输出流
文件输入输出流文件输入输出流是在计算机中进行文件读写操作的一种机制。
通过文件输入输出流,我们可以从文件中读取数据或者将数据写入文件中。
在程序开辟中,文件输入输出流常用于读取配置文件、读取和写入日志文件、进行数据持久化等操作。
文件输入输出流的基本概念和使用方法如下: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++中输⼊输出流及⽂件流操作笔记,供⼤家参考,具体内容如下1、流的控制iomanip 在使⽤格式化I/O时应包含此头⽂件。
stdiostream ⽤于混合使⽤C和C + +的I/O机制时,例如想将C程序转变为C++程序2、类继承关系ios是抽象基类,由它派⽣出istream类和ostream类, iostream类⽀持输⼊输出操作,iostream类是从istream类和ostream类通过多重继承⽽派⽣的类类ifstream继承了类istream,类ofstream继承了类ostream,类fstream继承了类iostreamiostream头⽂件中4种流对象cout补充1、⽤“cout<<”输出基本类型的数据时,可以不必考虑数据是什么类型,系统会判断数据的类型并根据其类型选择调⽤与之匹配的运算符重载函数。
这个过程都是⾃动的,⽤户不必⼲预。
如果在C语⾔中⽤prinf函数输出不同类型的数据,必须分别指定相应的输出格式符,⼗分⿇烦,⽽且容易出错2、cout流在内存中对应开辟了⼀个缓冲区,⽤来存放流中的数据,当向cout流插⼈⼀个endl时,不论缓冲区是否已满,都⽴即输出流中所有数据,然后插⼊⼀个换⾏符,并刷新流(清空缓冲区)。
注意如果插⼈⼀个换⾏符”\n“(如cout<<a<<"\n"),则只输出和换⾏,⽽不刷新cout 流(但并不是所有编译系统都体现出这⼀区别)。
3、在iostream中只对"<<"和">>"运算符⽤于标准类型数据的输⼊输出进⾏了重载,但未对⽤户声明的类型数据的输⼊输出进⾏重载。
如果⽤户声明了新的类型,并希望⽤"<<"和">>"运算符对其进⾏输⼊输出,按照重运算符重载来做。
Java程序设计实用教程_第10章_输入、输出流资料
2. Writer流以字符为单位顺序地写文件,每次调用write方法 就顺序地向目的地写入内容。 Writer类有如下常用的方法。
2019/4/7 6
例10-1 例10-1
Example10_1.java
page 177
2019/4/7
7
§10.1.2 目录
1.创建目录 public boolean mkdir() 2.列出目录中的文件
public String[] list() 用字符串形式返回目录下的全部文件。 ◆ public File [] listFiles() 用File对象形式返回目录下的全部文件。 ◆ public String[] list(FilenameFilter obj) 用字符串形式返回目录 下的指定类型的所有文件。 ◆ public File [] listFiles(FilenameFilter obj) 用File对象形式返回 目录下的指定类型所有文件。 上述两方法的参数 FilenameFilter是一个接口, 该接口有一个
◆
方法:
public boolean accept(File dir,String name);
例10-2
Example10_2.java , FileAccept.java
2019/4/7
8
§10.1.3 文件的创建与删除 当使用File类创建一个文件对象后,例如
File file=new File("c:\\myletter","letter.txt"); ◆ 如果 c:\myletter 目录中没有名字为 letter.txt 文件 , 文件对 象file调用方法 public boolean createNewFile();可以在 c:\myletter目录中建立一个名字为letter.txt的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录和文件管理
文件或目录的生成 文件名的处理
◆public File(String path):如果path ◆boolean mkdir():生成一个由该对象指定的路径 ◆boolean exists( ):测试当前File对象 是实际存在的路径,则该File对象 (新目录),若成功,返回True。 所指示的文件或目录是否存在,若存 表示的是目录;如果path是文件名, ◆boolean mkdirs():生成一个新的目录,包含子 在,返回True。 ◆String getName( ):得到一个文 则该File对象表示的是文件。 目录。若成功,返回true。 ◆boolean createNewFile():创建当前 件的名称(不包括路径)。 ◆public File(String path,String ◆boolean renameTo(File newName):将当前File对 文件。 ◆String getPath( ):得到一个文件 name):path是路径名,name是文 象所代表的路径名改为newName所代表的路径名。 ◆boolean canWrite( ):测试当前文件 的路径名。 件名(不可为空)。 若成功,返回true。 getAbsolutePath( ):得到 是否可写。 ◆String ◆public File(File ):得到文 ◆long lastModified(dir,String name): ◆String list():列出当前目录下的文件。 ◆boolean canRead( ):测试当前文件 一个文件的绝对路径名。 dir是路径名,name是文件名。 件最近一次修改的时间。 ◆File[] listFiles():得到该对象所代表的目录下的 是否可读。 getParent( ):得到一个文 ◆String ◆long File对象数组。 length( ):得到文件的长 ◆boolean isFile( ):测试当前文件是否 件的上一级目录名。 度,以字节为单位,若不存在, ◆String toString():得到抽象路径表示法。 是文件(不是目录)。 ◆String renameTo(File newName): 返回0。 ◆boolean isDirectory( ):测试当前文 将当前文件名更名为给定文件的 ◆boolean delete( ):删除File对 件是否是目录,若为目录则返回True。 完整路径。 象代表的文件或目录,目录需 为空。删除成功,返回True。
立体化教材计算机系列 —《Java程序设计》
‹#›
综合案例(续)
public void display(){ f = new Frame("FileEdit"); f.setSize(680,400); f.setLocation(200,140); f.setBackground(Color.lightGray); f.addWindowListener(this); tf1 = new TextField(); tf1.setEnabled(false); tf1.setFont(new Font("Dialog",0,20)); //设置文本行的初始字体 f.add(tf1,"North"); ta1 = new TextArea(); ta1.setFont(new Font("Dialog",0,20)); //设置文本区的初始字体 f.add(ta1); ta1.addTextListener(this); //注册文本区的事件监听程序 p1 = new Panel(); p1.setLayout(new FlowLayout(FlowLayout.LEFT));
第5章
输入输出流与文件操作
目 录
重点与难点点拨 输入输出流的分类 目录和文件管理 字节流 字符流 文件和随机访问 其他常用的流 综合案例 经典练习题
立体化教材计算机系列 —《Java程序设计》
‹#›
本章知识重点
1 3 2 3 3 4 3
输入输出流的概念 输入输出流的分类 java.io包中流的体系结构 目录和文件管理涉及到的类
——Java流的概念
Java中根据流操作的种类可分为:字节流和字符流 根据流的方向,流可分为两类:输入流和输出流
输入流(程序读入数据)
输出流(程序写出数据)
Java流类体系结构3 Java流类体系结构4 Java流类体系结构2 Java流类体系结构1
立体化教材计算机系列 —《Java程序设计》
‹#›
立体化教材计算机系列 —《Java程序设计》
‹#›
综合案例(续)
if ((e.getSource()==b2)||(e.getSource()==b3)) { //单击[保存]按钮时 if((e.getSource()==b3)||(e.getSource()==b2)&&(file1==null)) { //单击[SaveAs]按钮时,或单击[Save]按钮且文件对象为空时 fd = new FileDialog(f,"Save",FileDialog.SAVE); if(file1==null) fd.setFile("Edit1.txt"); else fd.setFile(file1.getName()); fd.setVisible(true); //创建并显示保存文件对话框 if((fd.getDirectory()!=null)&&(fd.getFile()!=null)) { tf1.setText(fd.getDirectory()+fd.getFile()); file1 = new File(fd.getDirectory(),fd.getFile()); save(file1); } }
3
缓冲区流BufferedInputStream和BufferedOutputStream
立体化教材计算机系列 —《Java程序设计》
‹#›
文件的随机访问
1 3
◆void writeByte(byte b) ◆void seek(long pos):将文件指针移到 ◆void writeBytes(String s) pos(不可为负)的位置,相对于文件初始位 ◆void writeChar(char c) 在java中,类RandomAccessFile 提供了随机访问文件的方法 ◆void writeChars(String s) 置值(初始值为0)。 ◆void writeDouble(double d) ◆long getFilePointer():得到目前文件指针 ◆void writeFloat(float f) ◆RandomAccessFile(File 的位置(相对于文件初始位置)。 file, String mode):构 ◆void writeInt(int i) RandomAccessFile类提供的用来读取某种基本数据类型的数据或字符串的方法 造一个随机访问文件流,file为被访问的文件对 ◆long length():得到文件的长度。 象,mode是用来指定存取的模式,mode可以为 ◆int◆void writeLong(long l) skipBytes( int n ):使文件指针向前移 ◆boolean writeShort(short s) ◆void readBoolean() r(读)、w(写)或rw(读写)。
立体化教材计算机系列 —《Java程序设计》
‹#›
本章知识难点
1 3 2 3
3
目录和文件管理涉及到的类
流输入及输出的一般过程 java.io包中的输入输出流类
立体化教材计算机系列 —《Java程序设计》
‹#›
输入输出流的分类
1 3
Java 流的概念
Java使用流(stream)来执行输入输出(I/O)的功能,流是一 种数据的源头和目的之间的通信途径
立体化教材计算机系列 —《Java程序设计》
‹#›
其他常用的流
1 3
管道流
ZIP文件流 DataInputStream和DataOutputStream 对象流
2 3
3 4 3
立体化教材计算机系列 —《Java程序设计》
‹#›
综合案例
【例15.16】下面的代码实现了一个简单的文件编辑器
import java.awt.*; import java.awt.event.*; import java.io.*; public class FileEdit extends WindowAdapter implements ActionListener,TextListener{ Frame f; TextArea ta1; Panel p1; TextField tf1; Button b1,b2,b3; FileDialog fd; File file1=null; public static void main(String args[]){ (new FileEdit()).display(); }
立体化教材计算机系列 —《Java程序设计》
‹#›
综合案例(续)
public void actionPerformed(ActionEvent e){ if (e.getSource()==b1) { //单击[打开]按钮时 fd = new FileDialog(f,"Open",FileDialog.LOAD); fd.setVisible(true); //创建并显示打开文件对话框 if ((fd.getDirectory()!=null) && (fd.getFile()!=null)) { tf1.setText(fd.getDirectory()+fd.getFile()); try //以缓冲区方式读取文件内容{ file1 = new File(fd.getDirectory(),fd.getFile()); FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); String aline; while ((aline=br.readLine())!= null)//按行读取文本 ta1.append(aline+"\r\n"); fr.close(); br.close(); } catch (IOException ioe){ System.out.println(ioe); } } }