第八章 文件流的输入输出操作(Java)
电大C语言程序设计 第8章 文件

第8章 文件 8.1 文件的概念 文件:存储在外部介质上数据的集合,是操作系统 数据管理的单位。 1. 文件流 在C语言中,数据的输入和输出包括对标准输入 设备键盘和标准输出设备显示器以及对外存磁盘 上存储的数据文件进行的输入和输出操作。 标准I/O:对标准输入设备和标准输出设备进行的 输入/输出。 文件I/O:对外存磁盘上的文件进行的输入/输出。
第8章 文件 8.4 二进制文件的访问操作 在每个文件中都存在一个文件位置指针,利用 fssek()函数可以将该指针移动到任何指定的位置 上。函数原型如下: int fseek(FILE* stream,long int num,int origin); origin的值为SEEK_SET(文件开始位置), SEEK_END(文件结尾位置), SEEK_CUR(文件 当前位置)之一。 num指定移动文件位置指针的位移量。 文件位置指针移动成功返回0,否则返回非0值。
第8章 文件 8.4 二进制文件的访问操作 例8_5 编一程序,首先利用48等10个整数初始化 一个整形数组a[10],接着把a中每个元素的值依 次写入到字节文件d:\xxk\data.bin中,然后再利 用对数组a进行升序排序,把排序结果依次写入 到上述字节文件中。 例8_6 从例8_5所建立的二进制文件中,首先读 出文件后部保存的按升序排列的10个整数并显示, 然后再读出前部保存的10个整数并显示。
第8章 文件 8.1 文件的概念 4. 数据文件的访问过程 C文件操作用库函数实现,包含在stdio.h。 文件使用方式:打开文件-->文件读/写-->关闭文件。 系统自动打开和关闭三个标准文件。 标准输入------键盘 stdin 标准输出------显示器 stdout 标准出错输出-----显示器 stderr
java 顺序读写文件的原理

java 顺序读写文件的原理Java顺序读写文件的原理顺序读写文件是一种常见的文件操作方式,特别是用于处理大型文件或者需要按照固定顺序访问文件内容的情况。
Java提供了多种API和技术来实现顺序读写文件,下面将介绍其原理。
1. 读取文件(顺序读取):顺序读取文件主要通过FileInputStream类来实现。
以下是其原理:- 使用FileInputStream类的构造函数创建一个文件输入流对象,并指定要读取的文件路径。
- 创建一个字节数组或者字符数组作为缓冲区,用来存放从文件中读取的数据。
- 使用read方法从文件输入流中读取数据,并将数据存入缓冲区。
read方法会返回读取的字节数或者字符数,如果已经读取到文件末尾,则返回-1。
- 重复执行上述步骤,直到读取完整个文件内容。
2. 写入文件(顺序写入):顺序写入文件主要通过FileOutputStream类来实现。
以下是其原理:- 使用FileOutputStream类的构造函数创建一个文件输出流对象,并指定要写入的文件路径。
- 创建一个字节数组或者字符数组作为缓冲区,用来存放待写入的数据。
- 使用write方法将缓冲区中的数据写入文件输出流。
write方法会将数据写入文件并返回写入的字节数或者字符数。
- 重复执行上述步骤,直到写入完所有数据。
- 使用close方法关闭文件输出流,确保所有数据都被写入文件。
需要注意的是,顺序读写文件时要合理设置缓冲区的大小。
缓冲区太小会导致频繁的IO操作,影响性能;缓冲区太大则会占用过多内存。
因此,根据实际情况调整缓冲区大小以达到最佳性能。
另外,为了保证顺序读写文件的稳定性和可靠性,建议在读写文件时使用try-catch-finally或者try-with-resources语句块,确保资源能够被正确释放。
总结:顺序读写文件是通过Java的FileInputStream和FileOutputStream类来实现的。
Java语言程序设计7-1-java第7章(文件数据流)

在屏幕上显示文字时需要注意的事项: 在屏幕上显示文字时需要注意的事项: FileReader.read()函数返回整型数,显示时必 函数返回整型数, 函数返回整型数 须把它强制转换成字符类型 如果不转换,显示结果如下: 如果不转换,显示结果如下:
软件学院
7.1 写入和读出数据文件
二进制数据文件的读写
DataInputStream in1 = new DataInputStream(file1); DataOutputStream out1 = new DataOutputStream(file2);
软件学院
7.1 写入和读出数据文件
3.用DataInputStream类读出数据 用 类读出数据
FileInputStream file1 = new FileInputStream("save1.dat"); FileOutputStream file2 = new FileOutputStream("save2.dat");
软件学院
7.1 写入和读出数据文件
2.创建文件读写对象 创建文件读写对象
while (aChar != '\u0000') { str.append(aChar); aChar = in1.readChar(); }
软件学院
7.1 写入和读出数据文件
5.关闭文件 关闭文件
在读取或写入文件之后, 在读取或写入文件之后,同样应当调用文件读写对 象的close函数关闭文件 象的 函数关闭文件 在写入文件时,内容往往只写在缓存里, 在写入文件时,内容往往只写在缓存里,只有在关 闭文件时才会真正将内容写入 关闭文件的代码如下: 关闭文件的代码如下:
IO

I/O流(熟练使用API)(一):简单介绍(java.io包)1:流的分类:(1)输入流 / 输出流:根据数据方向分类输入:从外部设备中读数据到程序中输出:从程序中写数据到外部设备中(2)字节流 / 字符流:根据数据单位分类(根据处理数据的不同来区分)(3)节点流 / 过滤流(包装流):根据流功能分类2、输入/输出流以inputstream/outstream为结尾的流都是字节流,所有文件,网络,键盘(所有设备)以reader/writer为结尾的是字符流, 所有文本操作InputStreamReader/OutputStreamWriter:是一个包装流InputStream ins= new FileInputStream("d:/file.txt"); Reader inr=new InputStreamReader(ins);3、节点流:可以直接读取源数据的流(直接点说:就是参数可以是数据源), 直接操作设备比如数据从文件中来的流:FileIOStream比如数据从内存空间中的字节数组中来:ByteArrayIOStream比如从管道中读写数据:PipedIOStream过滤流:对节点流或者其他过滤流进行了包装的流(参数只能是某种定义好的流)。
操作节点流(增强功能).4、字节流/字符流Java IO的一般使用原则:一、按数据来源(去向)分类:1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream3、是Char[]: CharArrayReader, CharArrayWriter4、是String: StringBufferInputStream, StringReader, StringWriter5、网络数据流:InputStream, OutputStream, Reader, Writer二、按是否格式化输出分:1、要格式化输出:PrintStream, PrintWriter三、按是否要缓冲分:1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter四、按数据格式分:1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream 结束的子类2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类五、按输入输出分:1、输入:Reader, InputStream类型的子类2、输出:Writer, OutputStream类型的子类六、特殊需要:1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter2、对象输入输出:ObjectInputStream, ObjectOutputStream3、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter4、合并输入:SequenceInputStream(序列流)5、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):第一,考虑最原始的数据格式是什么:是否为文本?第二,是输入还是输出?第三,是否需要转换流:InputStreamReader, OutputStreamWriter?第四,数据来源(去向)是什么:文件?内存?网络?第五,是否要缓冲:bufferedReader (特别注明:一定要注意的是readLine()是否有定义,有什么比read, write更特殊的输入或输出方法)第六,是否要格式化输出:print?(二):使用注意:1:打开一个流之后,一定要注意关闭。
Java基础常见英语词汇(共70个)

OO: object-oriented ,面向对象OOP: object-oriented programming,面向对象编程JDK:Java development kit, java开发工具包JVM:java virtual machine ,java虚拟机Compile:编绎Run:运行Class:类Object:对象System:系统out:输出print:打印line:行variable:变量type:类型operation:操作,运算array:数组parameter:参数method:方法function:函数member-variable:成员变量member-function:成员函数get:得到set:设置public:公有的private:私有的protected:受保护的default:默认access:访问package:包import:导入static:静态的void:无(返回类型)extends:继承parent class:父类base class:基类super class:超类child class:子类derived class:派生类override:重写,覆盖overload:重载final:最终的,不能改变的abstract:抽象interface:接口implements:实现exception:异常Runtime:运行时ArithmeticException:算术异常ArrayIndexOutOfBoundsException:数组下标越界异常NullPointerException:空引用异常ClassNotFoundException:类没有发现异常NumberFormatException:数字格式异常(字符串不能转化为数字)Try:尝试Catch:捕捉Finally:最后Throw:抛出Throws: (投掷)表示强制异常处理Throwable:(可抛出的)表示所有异常类的祖先类Lang:language,语言Util:工具Display:显示Random:随机Collection:集合ArrayList:(数组列表)表示动态数组HashMap: 散列表,哈希表Swing:轻巧的Awt:abstract window toolkit:抽象窗口工具包Frame:窗体Size:尺寸Title:标题Add:添加Panel:面板Layout:布局Scroll:滚动Vertical:垂直Horizonatal:水平Label:标签TextField:文本框TextArea:文本域Button:按钮Checkbox:复选框Radiobutton:单选按钮Combobox:复选框Event:事件Mouse:鼠标Key:键Focus:焦点Listener:监听Border:边界Flow:流Grid:网格MenuBar:菜单栏Menu:菜单MenuItem:菜单项PopupMenu:弹出菜单Dialog:对话框Message:消息Icon:图标Tree:树Node:节点Jdbc:java database connectivity,java数据库连接DriverManager:驱动管理器Connection:连接Statement:表示执行对象Preparedstatement:表示预执行对象Resultset:结果集Next:下一个Close:关闭executeQuery:执行查询Jbuilder中常用英文(共33个)File:文件New:新建New Project:新建项目New Class: 新建类New File:新建文件Open project:打开项目Open file:打开文件Reopen:重新打开Close projects:关闭项目Close all except…:除了..全部关闭Rename:重命名Exit:退出View:视图Panes:面板组Project:项目Content:内容Structure:结构Message:消息Source:源文件Bean:豆子Properties:属性Make:编绎Build:编绎Rebuild:重编绎Refresh:刷新Project properties:项目属性Default project properties:默认的项目属性Run:运行Debug:调试Tools:工具Preferences:参数配置Configure:配置Libraries:库JSP中常用英文URL: Universal Resource Location:统一资源定位符IE: Internet Explorer 因特网浏览器JSP:java server page.java服务器页面Model:模型View:视图C:controller:控制器Tomcat:一种jsp的web服务器WebModule:web模块Servlet:小服务程序Request:请求Response:响应Init: initialize,初始化Service:服务Destroy:销毁Startup:启动Mapping:映射pattern:模式Getparameter:获取参数Session:会话Application:应用程序Context:上下文redirect:重定向dispatch:分发forward:转交setAttribute:设置属性getAttribute:获取属性page:页面contentType:内容类型charset:字符集include:包含tag:标签taglib:标签库EL:expression language,表达式语言Scope:作用域Empty:空JSTL:java standard tag library,java标准标签库TLD:taglib description,标签库描述符Core:核心Test:测试Foreach:表示循环Var:variable,变量Status:状态Items:项目集合Fmt:format,格式化Filter:过滤报错英文第一章:JDK(Java Development Kit) java开发工具包JVM(Java Virtual Machine) java虚拟机Javac 编译命令java 解释命令Javadoc 生成java文档命令classpath 类路径Version 版本author 作者public 公共的class 类static 静态的void 没有返回值String 字符串类System 系统类out 输出print 同行打印println 换行打印JIT(just-in-time) 及时处理第二章:byte 字节char 字符boolean 布尔short 短整型int 整形long 长整形float 浮点类型double 双精度if 如果else 否则switch 多路分支case 与常值匹配break 终止default 默认while 当到循环do 直到循环for 已知次数循环continue结束本次循环进行下次跌代length 获取数组元素个数第三章:OOP object oriented programming 面向对象编程Object 对象Class 类Class member 类成员Class method 类方法Class variable 类变量Constructor 构造方法Package 包Import package 导入包第四章:Extends 继承Base class 基类Super class 超类Overloaded method 重载方法Overridden method 重写方法Public 公有Private 私有Protected 保护Static 静态Abstract 抽象Interface 接口Implements interface 实现接口第五章:Exception 意外,异常RuntimeExcepiton 运行时异常ArithmeticException 算术异常IllegalArgumentException 非法数据异常ArrayIndexOutOfBoundsException 数组索引越界异常NullPointerException 空指针异常ClassNotFoundException 类无法加载异常(类不能找到)NumberFormatException 字符串到float类型转换异常(数字格式异常)IOException 输入输出异常FileNotFoundException 找不到文件异常EOFException 文件结束异常InterruptedException (线程)中断异常try 尝试catch 捕捉finally 最后throw 投、掷、抛throws 投、掷、抛print Stack Trace() 打印堆栈信息get Message()获得错误消息get Cause()获得异常原因method 方法able 能够instance 实例check 检查第六章:byte(字节)char(字符)int(整型)long(长整型)float(浮点型)double(双精度)boolean(布尔)short(短整型)Byte (字节类)Character (字符类)Integer(整型类)Long (长整型类)Float(浮点型类)Double (双精度类)Boolean(布尔类)Short (短整型类)Digit (数字)Letter (字母)Lower (小写)Upper (大写)Space (空格)Identifier (标识符)Start (开始)String (字符串)length (值)equals (等于)Ignore (忽略)compare (比较)sub (提取)concat (连接)replace (替换)trim (整理)Buffer (缓冲器)reverse (颠倒)delete (删除)append (添加)Interrupted (中断的)第七章:Date 日期,日子After 后来,后面Before 在前,以前Equals 相等,均等toString 转换为字符串SetTime 设置时间Display 显示,展示Calendar 日历Add 添加,增加GetInstance 获得实例getTime 获得时间Clear 扫除,清除Clone 克隆,复制Util 工具,龙套Components 成分,组成Month 月份Year 年,年岁Hour 小时,钟头Minute 分钟Second 秒Random 随意,任意Next Int 下一个整数Gaussian 高斯ArrayList 对列LinkedList 链表Hash 无用信息,杂乱信号Map 地图Vector 向量,矢量Size 大小Collection 收集Shuffle 混乱,洗牌RemoveFirst 移动至开头RemoveLast 移动至最后lastElement 最后的元素Capacity 容量,生产量Contains 包含,容纳Copy 副本,拷贝Search 搜索,查询InsertElementAt 插入元素在某一位置第八章:io->in out 输入/输出File 文件import 导入exists 存在isFile 是文件isDirectory 是目录getName 获取名字getPath 获取路径getAbsolutePath 获取绝对路径lastModified 最后修改日期length 长度InputStream 输入流OutputStream 输出流Unicode 统一的字符编码标准, 采用双字节对字符进行编码Information 信息FileInputStream 文件输入流FileOutputStream文件输出流IOException 输入输出异常fileobject 文件对象available 可获取的read 读取write 写BufferedReader 缓冲区读取FileReader 文本文件读取BufferedWriter 缓冲区输出FileWriter 文本文件写出flush 清空close 关闭DataInputStream 二进制文件读取DataOutputStream二进制文件写出EOF 最后encoding 编码Remote 远程release 释放第九章:JBuider Java 集成开发环境(IDE)Enterprise 企业版Developer 开发版Foundation 基础版Messages 消息格Structure 结构窗格Project 工程Files 文件Source 源代码Design 设计History 历史Doc 文档File 文件Edit 编辑Search 查找Refactor 要素View 视图Run 运行Tools 工具Window 窗口Help 帮助Vector 矢量addElement 添加内容Project Winzard 工程向导Step 步骤Title 标题Description 描述Copyright 版权Company 公司Aptech Limited Aptech有限公司author 作者Back 后退Finish 完成version 版本Debug 调试New 新建ErrorInsight 调试第十章:JFrame 窗口框架JPanel 面板JScrollPane 滚动面板title 标题Dimension 尺寸Component 组件Swing JA V A轻量级组件getContentPane 得到内容面板LayoutManager 布局管理器setVerticalScrollBarPolicy 设置垂直滚动条策略AWT(Abstract Window Toolkit)抽象窗口工具包GUI (Graphical User Interface)图形用户界面VERTICAL_SCROLLEARAS_NEEDED 当内容大大面板出现滚动条VERTICAL_SOROLLEARAS_ALWAYS 显示滚动条VERTICAL_SOROLLEARAS_NEVER 不显示滚动条JLabel 标签Icon 图标image 图象LEFT 左对齐RIGHT 右对齐JTextField 单行文本getColumns 得到列数setLayout 设置布局BorderLayout 边框布局CENTER 居中对齐JTextArea 多行文本setFont 设置字体setHorizontalAlignment 设置文本水平对齐方式setDefaultCloseOperation 设置默认的关闭操作add 增加JButton 按钮JCheckBox 复选框JRadioButton单选按钮addItem 增加列表项getItemAt 得到位置的列表项getItemCount 得到列表项个数setRolloverIcon 当鼠标经过的图标setSelectedIcon 当选择按钮的图标getSelectedItem 得到选择的列表项getSelectedIndex 得到选择的索引ActionListener 按钮监听ActionEvent 按钮事件actionPerformed 按钮单击方法附加………….可能有重复编程英语:(手摘)abstract (关键字) 抽象['?bstr?kt]access vt.访问,存取['?kses]‘(n.入口,使用权)algorithm n.算法['?lg?riem]Annotation [java] 代码注释[?n?u'tei??n]anonymous adj.匿名的[?'n?nim?s]‘(反义:directly adv.直接地,立即[di'rektli, dai'rektli])apply v.应用,适用[?'plai]application n.应用,应用程序[,?pli'kei??n]‘(application crash 程序崩溃) arbitrary a.任意的['ɑ:bitr?ri]argument n.参数;争论,论据['ɑ:gjum?nt]‘(缩写args)assert (关键字) 断言[?'s?:t] ‘(java 1.4 之后成为关键字)associate n.关联(同伴,伙伴) [?'s?u?ieit]attribute n.属性(品质,特征) [?'tribju:t]boolean (关键字) 逻辑的, 布尔型call n.v.调用; 呼叫; [k?:l]circumstance n.事件(环境,状况) ['s?:k?mst?ns]crash n.崩溃,破碎[kr??]cohesion 内聚,黏聚,结合[k?u'hi:??n](a class is designed with a single, well-focoused purpose. 应该不止这点)command n. 命令,指令[k?'mɑ:nd](指挥, 控制) (command-line 命令行) Comments [java] 文本注释['k?ments]compile [java] v.编译[k?m'pail]‘Compilation n.编辑[,k?mpi'lei??n]const (保留字)constant n. 常量, 常数, 恒量['k?nst?nt]continue (关键字)coupling 耦合,联结['k?pli?]making sure that classes know about other classes only through their APIs.declare [java] 声明[di'kl??]default (关键字) 默认值; 缺省值[di'f?:lt]delimiter 定义符; 定界符Encapsulation[java] 封装(hiding implementation details)Exception [java] 例外; 异常[ik'sep??n]entry n.登录项, 输入项, 条目['entri]enum (关键字)execute vt.执行['eksikju:t]exhibit v.显示, 陈列[ig'zibit]exist 存在, 发生[ig'zist] ‘(SQL关键字exists)extends (关键字) 继承、扩展[ik'stend]false (关键字)final (关键字) finally (关键字)fragments 段落; 代码块['fr?gm?nt]FrameWork [java] 结构,框架['freimw?:k]Generic [java] 泛型[d?i'nerik]goto (保留字) 跳转heap n.堆[hi:p]implements (关键字) 实现['implim?nt]import (关键字) 引入(进口,输入)Info n.信息(information [,inf?'mei??n] )Inheritance [java] 继承[in'herit?ns] (遗传,遗产)initialize 预置初始化[i'ni??laiz]instanceof (关键字) 运算符,用于引用变量,以检查这个对象是否是某种类型。
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;
(完整版)5Java第五单元练习题-输入流与输出流

5 Java 输入流与输出流 5.1单项选择题 1.实现字符流的写操作类是 (A . FileReader B . Writer C )。
File In putStreamDFileOutputStream 2.实现字符流的读操作类是() A . FileReader B . Writer C . 3 .凡是从中央处理器流向外部设备的数据流称为File In putStream D()FileOutputStream A. 文件流B. 字符流C. 输入流D. 输出流4 .构造 BufferedInputStream 的合适参数是哪一个?( )A . FileI nputStreamB . BufferedOutputStreamC . FileD . FileOuterStream5.在编写Java Application 程序时,若需要使用到标准输入输出语句,头写上()语句。
A . import java.awt.* ; B import java.applet.Applet ;C . import java.io.* ;D . import java.awt.Graphics ;必须在程序的开6 . 下列流中哪个不属于字符流?( )A . In putStreamReaderB . BufferedReadeC . FilterReader 7 .流的传递方式是() rA. 并行的 D . File InputStreamB. 串行的C. 并行和串行D. 以上都不对8.字符流与字节流的区别在于()A. 前者带有缓冲,后者没有B. 前者是块读写,后者是字节读写C. 二者没有区别,可以互换使用D. 每次读写的字节数不同9.下列流中哪个不属于字节流A . FileInputStreamB . BufferedInputStream C. FilterInputStreamD. InputStreamReader10 .如果需要从文件中读取数据,则可以在程序中创建哪一个类的对象( ) A . FileInputStream B . C . DataOutputStream D . FileOutputStreamFileWriter11. 下列哪一个 import 命令可以使我们在程序中创建输入/ 输出流对象 ()12. 下面的程序段创建了 BufferedReader 类的对象 in ,以便读取本机 c 盘 my 文件夹下的文 件 1.txt 。
JAVA中文件写入的6种方法

JAVA中文件写入的6种方法在Java中,我们可以使用不同的方法将数据写入文件。
下面介绍了6种常见的文件写入方法。
方法一:使用FileOutputStream类FileOutputStream类用于写入数据到文件中。
它是OutputStream类的一个派生类,并提供了用于写入字节的各种方法。
```javatryFileOutputStream fos = new FileOutputStream("file.txt");byte[] data = "Hello, World!".getBytes(;fos.write(data);fos.close(;} catch (IOException e)e.printStackTrace(;```方法二:使用BufferedWriter类BufferedWriter类提供了一个高效的方式将文本写入文件。
它继承自Writer类,可用于写入字符和字符串。
```javatryBufferedWriter bw = new BufferedWriter(newFileWriter("file.txt"));bw.write("Hello, World!");bw.close(;} catch (IOException e)e.printStackTrace(;```方法三:使用PrintWriter类PrintWriter类是Writer类的子类,可以用于写入字符和字符串到文件中。
```javatryPrintWriter pw = new PrintWriter("file.txt");pw.println("Hello, World!");pw.close(;} catch (IOException e)e.printStackTrace(;```方法四:使用FileWriter类FileWriter类用于写入字符或字符串到文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件流的输入输出操作
相关回顾
1 、当程序在运行过程中出现错误成为异常;异常分为哪两类? Error类和Exception类 2 、Java异常处理分为哪两步? 捕捉异常、处理异常。 3 、处理Java异常的两种机制是什么? 捕捉处理异常(try…catch….)和抛出异常(throw和throws)。 4 、异常处理有哪5个关键字? try、catch、finally和throw、throws。 5 、说说catch、finally和throw表示什么意思? catch表示捕捉异常、finally表示始终都会执行的代码块、 throw表示抛出异常。
本章任务
1、创建文件对象。 2、读写文本文件。 3、读写二进制文件。 4、对象的序列化与反序列化。
本章目标
了解文件与流的概念 掌握File类 掌握文本文件的读写操作 掌握二进制文件的读写操作 了解对象的序列化、反序列化操作
为什么要使用文件
• 在程序运行时,可以使用内存存储数据。但是内存中的数 据在程序退出、断电或计算机重启后就全部清除。 • 将数据存储在内存中,每次运行程序都需要重新录入信息。 • 有实际意义的程序都需要永久保存数据,那我们使用什么 来永久性的存储数据呢? • 答案就是 使用文件
File 类
构造文件对象 物理文件或目录
操文件或目录的属性
(路径、权限、日期和时间等 )
File类的常用方法
• File类的常用方法如下:
方法名 exists() createNewFile() isFile() isDirectory() getName() getPath() getAbsolutePath() listFiles() lastModified() length()
10
描述 判读文件或目录是否存在,存在返回true,否则 返回false 创建文件 判断是否是文件,是文件返回true 判断是否是目录,是目录返回true 获取文件或目录名称 获取文件或目录的路径 获取文件或目录的绝对路径 获取指定目录下的所有文件,返回File[]的数组 获取文件或目录的最后修改日期 获取文件或目录的大小,单位为字节
22
示例
从“e:\\test\\a.txt”文件里读取数据。
import java.io.*; …… FileReader fr = new FileReader(" e:\\test\\a.txt "); BufferedReader br = new BufferedReader(fr); System.out.println(br.readLine()); br.close(); fr.close(); // 要读取行需使用 要读取行需使用br
什么是文件
• 什么是文件? 文件可认为是相关记录或放在一起的数据的集合 • 文件一般存储在哪里?
• JAVA程序一般通过什么去访问文件属性? JAVA API :java.io.File 类
什么是File类
• File类的定义?
File类表示磁盘上的文件或目录。在Java中不管是文件还是 类表示磁盘上的文件或目录。 类表示磁盘上的文件或目录 中不管是文件还是 目录统一都用File类来表示。 类来表示。 目录统一都用 类来表示
字符流
– – 16 位 Unicode Reader Writer
文本文件的读写
写文件操作
– – 用FileOutputStream 字节输出流写文本文件 用FileWriter字符输出流写文本文件
读文件操作
– – 用FileInputStream字节输入流读文本文件 用FileReader字符输入流读文本文件
21
FileReader类 类
FileReader是用于从文件中读取字符数据流的类,继承自 InputStreamReader类,方便创建字符流对象。 FileReader常用方法如下:
方法名 FileReader(File f) close() 作用 根据File创建 创建FileReader对象用于读取文本 根据 创建 对象用于读取文本 文件 关闭FileReader 关闭
18
FileWriter类 类
FileWriter是用于写入字符数据流到文件中的类,继承自 OutputStreamWriter类,方便创建字符流对象。 FileWrite常用方法如下:
方法 FileWrite(File f) ( ) write( String val ) close() 描述 构造方法,根据 创建FileWrite对象 构造方法,根据File创建 创建 对象 将字符串写入文件 关闭文件写入流
创建文件对象
在java.io包中定义的File类是用于针对磁盘创建文件对象的。 怎样在Java中实现创建一个文件夹,并在这个文件夹中创 建文件。比如想让输出的文件保持到一个原来没有的文件 夹下,示例如下: 创建一个文件夹test和在该文件夹下创建一个a.txt文件。
File f1 = new File("E:\\test"); if(f1.exists()){ System.out.println("该文件夹已经存在 该文件夹已经存在"); 该文件夹已经存在 }else{ f1.mkdir(); } File f2 = new File("E:\\test\\a.txt"); f2.createNewFile();
小结1
File类提供了与平台无关的方法来对磁盘上的文件或目录进行 操作。File 类的实例是不可变的,也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。 File类提供一个抽象的、与系统独立的路径表示。给它一个路 径字符串,它会将其转换为与系统无关的抽象路径表示,这个 路 径 可 以 指 向 一 个 文 件 、 目 录 或 是 URI(Uniform Resource Identifier)。 一个File类的实例被建立时,它就不能再被改变内容。File类 实例除了用作一个文件或目录的抽象表示之外,它还提供了不 少相关操作方法。可以用它来对文件系统做一些查询与设置的 动作。
相关回顾
…… System.out.print("请输入课程代号 至3之间的数字 :"); 请输入课程代号(1至 之间的数字 之间的数字): 请输入课程代号 Scanner in = new Scanner(System.in); try { int courseCode = in.nextInt(); 输入:2 输入:B switch (courseCode) { case 1: System.out.println("C#编程 编程"); 编程 break; case 2: System.out.println("Java编程 编程"); 编程 break; case 3: 第一种情况: 第一种情况: 第二种情况: 第二种情况 System.out.println("SQL基础 基础"); 基础 } 无异常 有异常 } catch (Exception ex) { System.out.println("输入不为数字!"); 输入不为数字! 输入不为数字 } finally { 控制台输出 System.out.println("欢迎提出建议!"); 欢迎提出建议! 欢迎提出建议 }
FileInputStream类 类
FileInputStream 是用于从文件中读取字节数据流的类,提 供了最基础的文件读取数据操作。 从“e:\\test\\a.txt”文件里取出数据。
import java.io.*; …… InputStream fis = new FileInputStream(" e:\\test\\a.txt "); byte[] buf = new byte[1024]; while ((fis.read(buf) != -1) { System.out.println(new String(buf)); } fis.close();
包中定义的输入、 在java.io包中定义的输入、输出流操作类都适合对磁盘文件内容的 包中定义的输入 读写操作。它们都可以通过绑定一个文件对象创建输出流对象, 读写操作。它们都可以通过绑定一个文件对象创建输出流对象,可 以直接指定磁盘文件名创建输出流对象, 以直接指定磁盘文件名创建输出流对象,通过输入输出流对象来实 现文件的读写操作。 现文件的读写操作。
什么是流
• 流是指一连串流动 一连串流动的字符,是以先进先出 先进先出方 一连串流动 先进先出 式发送信息的通道。
InputStream
F
E
D
C
B
A
OutputStream
来自数据源的数据流 流向目的地的数据流
流
Java流的分类
字节流
– – 8位 InputStream OutputStream
19
示例
向“e:\\test\\a.txt”文件里写入“我要认真学习”。
import java.io.*; …… FileWriter fw = new FileWriter(" e:\\test\\a.txt "); BufferedWriter bw = new BufferedWriter(fw); bw.writer("我要认真学习 我要认真学习"); 我要认真学习 bw.flush(); fw.close();
输入不为数字! Java编程 编程 输入不为数字 欢迎提出建议! 欢迎提出建议! 欢迎提出建议 欢迎提出建议
预习检查
文件的定义是什么? File类是文件和目录的抽象表示形式。 File类常用的方法有哪些,列举三个? exists()、isFile()、isDirectory()、length()、getName() 写文本文件可以使用哪两个类? FileOutputStream、FileWriter 对象序列化与反序列化使用哪两个类? ObjectOutputStream 、ObjectInputStream