ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:108.53KB ,
资源ID:3672159      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3672159.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验6 文件IO练习.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验6 文件IO练习.docx

1、实验6 文件IO练习实验6 文件IO练习一. 实验目的1. 通过阅读本课件知识点和例题,了解文件I/O的类型、原理、程序资源(类族)和编程方法。2. 参考本课件对文件I/O类方法的描述及其给出的例题,寻找解决方案并编写程序,实现所要求的输入输出功能,以加深对本章内容的理解、提高文件I/O的实际运用能力。二. 知识点和例题1. 文件I/O的概念和分类 什么是文件文件是存储于外存储器 (如硬盘、U盘) 上 的一组信息的集合。文件在外存储器上以树形层次结构存储,由操作系统管理。例如在Windows资源管理器上“我的电脑”是树根,文件是树叶,期间有驱动器和一系列文件夹作为树杈。文件由文件名以及表示在树

2、上位置的一个路径来标识,文件名由主名和表示文件类型的扩展名构成,例如:C:Documents and SettingsJavaMyProg.java盘符 路径 文件名 扩展名 何谓及如何实现文件I/O内存与文件的信息交换称为文件/,即从文件输入()和向文件输出()。广义的文件也包括/设备,如打印机等。这些信息交换由程序来控制,不同的程序设计语言有不同的文件/控制方法。如C用fscanffprintf、freadfwrite等几套函数; C+用fstream中的ifstream/ofstream对象; C#用stream类及其下面的一系列子类;Java则用InputStreamOutputStr

3、eam、ReaderWriter类族来实现文件/。 文件的类型要正确实现文件/,必须根据文件的性质及/方式将文件分为几种不同的类型:文本文件保存以ASCII、UNICODE等编码方式存储的文本。二进制文件保存以二进制方式存储的数据,如整数、浮点数、声音、图像等。顺序读写文件以顺序读写方式打开的文件,按照字节或进出数据的顺序进行读写。随机读写文件以随机读写方式打开的文件,按照数据在文件中的位置(字节序号)进行定长数据的读写。 流的概念流 (stream) 是一组有序的、有起点和终点的字节集合,是对输入输出的抽象。引入流的目的是使/操作与具体设备无关。对流的操作以字节为单位进行,并常常使用缓冲区(

4、buffer)技术,这是因数据在内存中流动的速度要比文件存取的速度快得多,而文件存取的时间又与存取的频率成正比,为减小存取频率,系统让/先对缓冲区进行,当缓冲区空、满或文件关闭时,才发生物理的读入或写出。 字节流和字符流字节流是 Java 文件/的基本类型,即以字节为单位的、顺序方式的输入和输出。根据数据源、是否使用缓冲区,以及一次输入输出数据的类型等因素,在这种基本类型之上又派生出一系列子类型。字符流是以字符为单位的/。由于Java使用的是UNICODE编码,因此单次输入输出的若是一个字节,则汉字等非英文字符将无法正确显示。根据是否有缓冲区等因素,字符流亦派生出一系列子类型。 操作方式和类族

5、流操作方式字节流类族字符流类族不使用缓冲区InputStreamOutputStreamReaderWriter使用缓冲区BufferedInputStreamBufferedOutputStreamFileReaderFileWriter 将字节流转化为基本类型流DataInputStreamDataOutputStream将字节流转化为字符流InputStreamReaderOutputStreamWriter将流转化为StringPrintStreamPrintWriter将字节流转化为对象流ObjectInputStreamObjectOutputStream 关于序列化在面向对象程序

6、中,有时我们需要把对象的数据(往往由各种不同的类型的数据项组成)按照原来的结构一并向文件写入,或从文件读出到对象中,并且将一个个对象的值首尾串接构成一个序列,怎样写入,就怎样读出,这种/方式称为序列化 (serialization)。由于不同类对象的数据结构不同,因此任何打算序列化的对象,其所属类都必须实现java.io.Serializable接口规范。 文件/作业的一般流程读操作 (I)写操作 (O)1import java.io.*;import java.io.*;2try 打开(open)一个流try 打开(open)一个流3 while (还有数据) 读出数据; /其它处理 whi

7、le (还有数据) 写入数据; /其它处理 4 关闭(close)打开的流 catch(IOException e) 关闭(close)打开的流 catch(IOException e) 2. File类和JfileChooser类 File类概述一个文件的信息分外部信息和内部信息,外部信息除了路径、文件名和扩展名之外,还包括是否只读、是否隐藏等属性信息;内部信息则是文件中的内容。File类封装了文件的外部信息,并提供了对它的一系列操作,如修改文件属性、重命名等。除此之外,File类的对象还用作流方法的参数,用来将流对象与物理文件绑定,例如:File f = new File(e:, 0614

8、3.txt);FileReader in = new FileReader(f); File类的方法 构造方法方法原型功能说明和实例File(File parent, String child)利用File对象与字符串构成的路径创建一个File对象,例如:File d = new File(e:folder);File f = new File(d, me.txt);File(String pathname)利用字符串指定的路径和文件名创建一个File对象,例如:File f = new File(e:me.txt);File(String parent, String child)利用字符串

9、指定的路径和文件名创建一个File对象,例如: File f = new File(e:,me.txt);File(URI uri)利用URI对象创建一个File对象 测试文件状态方法原型功能说明和实例boolean exists()测试File对象代表的文件是否存在,例如: if(f.exists() in = new FileReader(f);boolean isFile()测试File对象是否代表文件boolean isDirectory()测试File对象是否代表文件夹boolean isAbsolute()测试File对象代表的是否为绝对路径boolean isHidden()测试

10、File对象代表的是否为隐藏文件boolean canRead()测试File对象代表的文件是否为只读boolean canWrite()测试File对象代表的文件是否可写 测试文件属性方法原型功能说明和实例String getName()返回File对象代表的文件的名称,例如:File f = new File(e:06143.txt); System.out.print(f.getName(); / 打印“06143.txt”long length()返回File对象代表的文件的大小,例如:File f = new File(e:06143.txt); System.out.print(f

11、.length(); / 打印“2175”long lastModified()返回File对象代表的文件的最近一次修改时间,可通过Date转换为可读格式String getParent()返回File对象代表的文件的上层文件夹File getParentFile()返回File对象代表的文件的上层文件夹相关的File对象 测试文件路径方法原型功能说明和实例String getPath()返回File对象所代表文件的路径总称, 如果创建时未设置,则返回文件名称String getAbsolutePath()返回File对象所代表文件的绝对路径: File f = new File(e:0614

12、3.txt);System.out.println(f.getAbsolutePath();String getCanonicalPath()返回File对象所代表文件的规范路径:File f = new File(e:06143.txt);try System.out.println(f.getCanonicalPath(); catch / 必须包含在trycatch块中File getAbsoluteFile()以File形式返回File对象所代表文件的绝对名称File getCanonicalFile()以File形式返回File对象所代表文件的规范名称 设置文件属性方法原型功能说明和

13、实例boolean renameTo(File dest)将File对象代表的文件更名为dest代表的文件的名称,例如:File f = new File(e:06143.txt); f.renameTo(newFile(e:123.txt);System.out.print(f.getName();经过这一操作后,磁盘上的文件被改名,但对象f的值不变boolean setReadOnly()将File对象代表的文件更改为具有只读属性boolean setLastModified(long time)设置File对象所代表的文件的最近一次修改时间 创建和删除文件夹方法原型功能说明和实例bool

14、ean mkdir()创建一个文件夹,并以File对象中的文件名作为文件夹名,例如:File f = new File(e:Java2);f.mkdir(); / 在e:盘根目录下创建文件夹Java2boolean mkdirs()创建一个包含有上层文件夹的文件夹,并以File对象中的路径作为文件夹名,例如:File f = new File(e:Javaworkspace);f.mkdirs(); / 在e:盘下创建 Javaworkspaceboolean delete()删除File对象代表的文件或文件夹,例如:File f = new File(e:Java2);f.delete();

15、void deleteOnExit()程序结束时删除File对象代表的文件或文件夹 列出文件方法原型功能说明和实例String list()返回File对象所代表的文件夹下的文件和文件夹String list(FilenameFilter filter)返回File对象代表的文件夹下、符合给定文件名约束条件的文件和文件夹File listFiles()返回File对象代表的文件夹下所有File对象File listFiles(FileFilter filter)返回File对象代表的文件夹下符合给定内部信息约束条件的File对象File listFiles(FilenameFilter fil

16、ter)返回File对象代表的文件夹下符合给定文件名约束条件的File对象static File listRoots()列出所有可取得的文件系统的根目录 JFileChooser类概述JFileChooser类是Swing类库中的一个成员, Swing类库是Sun开发的一个图形用户界面(GUI) 工具包,将在“用户界面”一章详细介绍,这里引入JFileChooser类的目的是想配合File类,让用户在一个可视化的环境下对所需文件进行选择,这样,作业Student中的文件“06143.txt”也就不必写入源程序了。要使用JFileChooser类,需要在源文件头部使用以下语句:import ja

17、vax.swing.JFileChooser; JFileChooser的方法 构造方法方法原型功能说明JFileChooser()在默认目录下选择文件JFileChooser(File currentDirectory)在File代表的目录下选择文件JFileChooser(File currentDirectory,FileSystemView fsv)利用FileSystemView在当前目录下选择文件JFileChooser(FileSystemView fsv)利用FileSystemView选择JFileChooser(String currentDirPath)在指定目录下选择文

18、件JFileChooser(String currentDirPath,FileSystemView fsv)利用FileSystemView在指定的目录下选择文件 打开窗口方法原型功能说明int showOpenDialog(Component parent)打开一个“Open”文件对话框int showSaveDialog(Component parent)打开一个“Save”文件对话框int showDialog(Component parent,String approveButtonText)自定义Open或Save按钮文本showOpenDialog的返值及其意义:JFileCho

19、oser.APPROVE_OPTION 用户点击取消以外的按钮JFileChooser.CANCEL_OPTION 用户点击取消按钮JFileChooser.ERROR_OPTION 发生错误或不正常关闭 选择文件方法原型功能说明File getSelectedFile()返回被选中的文件File getSelectedFiles()返回所有被选中的文件boolean isMultiSelectionEnabled()返回是否允许多重选择void setMultiSelectionEnabled(boolean b)设置是否允许多重选择 设置外观方法原型功能说明void setApproveB

20、uttonText(String approveButtonText)设置“确定”按钮的文字内容void setApproveButtonToolTipText(String ToolTipText)设置“确定”按钮的ToolTip文字File getCurrentDirectory()返回代表当前目录的对象String getDialogTitle()返回文件设置窗口标题 JFileChooser类应用实例import java.io.*;import javax.swing.JFileChooser;public class UseJFileChooser public static vo

21、id main(String args) File f = new File(我的文档); JFileChooser fileChooser = new JFileChooser(f); if (fileChooser.showOpenDialog(null) = FileChooser.APPROVE_OPTION) f = fileChooser.getSelectedFile(); System.out.print(您选择的文件是: + f.getPath(); else System.out.print(用户取消); 3. 字节流类族 层次结构图 抽象基类 InputStream抽象类

22、方法功能InputStream()构造方法:创建字节输入流对象int available()测试有多少字节可供读取abstract int read()抽象方法:读取一个字节int read(byte b)将读取的字节存入byte数组int read(byte b, int off, int len)将自off读取len个字节存入数组long skip(long n)读标志从数据源跳过n个字节boolean markSupported()测试可否在数据源中加标记void mark(int readLimit)在数据源的给定位置加标记void reset()重置上次加注的标记void close

23、()关闭数据源并释放资源 OutputStream抽象类方法功能OutputStream()构造方法:创建字节输出流对象abstract void write(int data)抽象方法:写出data中1字节数据void write(byte b)将byte数组中的数据写出void write(byte b, int off, int len)从off开始写出数组中len字节数据void flush()清空数据源对象void close()关闭数据源 文件字节流子类这组子类分别继承自抽象基类InputStream和OutputStream,并将外部文件作为流的来源(数据源),即从文件读,向文件

24、写。文件名可由已创建的File对象给出,也可由一个字符串给出,例如文件名为1.txt,则:File fi = new File(e:1.txt);FileInputStream fis = new FileInputStream(fi);或:FileInputStream fis = new FileInputStream(e:1.txt);在创建该对象的同时,文件也被打开。1 FileInputStream子类方法功能FileInputStream(File file)创建以File对象作为数据源的对象FileInputStream(String name)创建以文件name作为数据源的对象

25、int available()测试有多少字节可以从文件读取int read()从给定文件读取一个字节int read(byte b)读取数据放入byte数组, 并返回字节数int read(byte b, int off, int len)读取len个字节存入byte数组off位置long skip(long n)读标志从数据源跳过n个字节boolean markSupported()测试可否在数据源中加注标记void mark(int readLimit)在数据源的给定位置加注标记void reset()重置上次加注的标记void close()关闭数据源并释放资源 FileOutputSt

26、ream子类方法功能FileOutputStream(File file)创建以File作为数据源的对象FileOutputStream(String name)创建以name作为数据源的对象FileOutputStream(String name,boolean append)创建以name作为数据源的对象并指出是否以追加的方式写出void write(int data)向给定文件写出一个字节void write(byte b)将byte数组中的数据写到文件void write(byte b, int off, int len)从off开始写出数组len字节数据void flush()清空数

27、据源对象void close()关闭数据源程序实例:import java.io.*;public class UseFileInputStream public static void main(String args) File fi = new File(e:06143.txt); File fo = new File(d:06143.txt); try FileInputStream fis = new FileInputStream(fi); FileOutputStream fos = new FileOutputStream(fo); int ch, n = fis.availa

28、ble(); for (int i = 0; i n; i +) ch = fis.read(); fos.write(ch); fis.close(); fos.close(); catch (IOException e) System.err.println(e.getMessage(); 数组字节流子类这组子类分别继承自InputStream和OutputStream,但使用一个字节数组byte作为流的来源,该字节数组在ByteArrayInputStream中是作为构造方法参数表中的一个参数被引用;而在ByteArrayOutputStream中,则是作为类的属性被封装,即从给定的一个

29、byte数组读;向封装在对象内部的一个byte数组写。对数组进行I/O的目的是:因为数组在内存中,I/O速度远比文件快得多,当程序需要高速度、非永久性的I/O时,数组是最好的选择。 ByteArrayInputStream子类方法功能ByteArrayInputStream(byte d)创建以byte数组作为数据源的对象ByteArrayInputStream(byte d,int off, int len)创建以byte数组作为数据源的对象,数据的存储从off开始,使用len个字节int available()测试有多少字节可以从byte数组中读取int read()从byte数组读取一个字节int read(byte b)从byte数组读取数据到另一个byte数组int read(byte b, int off, i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1