Java程序设计课件(高晓黎)第15章输入输出流和文件操作

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

21
综合案例(续)
b1 = new Button("Open"); b2 = new Button("Save"); b3 = new Button("Save As"); p1.add(b1); p1.add(b2); p1.add(b3); b2.setEnabled(false); b3.setEnabled(false); b1.addActionListener(this); //注册按钮的事件监听程序 b2.addActionListener(this); b3.addActionListener(this); f.add(p1,"South"); f.setVisible(true); } public void textValueChanged(TextEvent e) { //实现TextListener接口中的方法,对文本区操作时触发 b2.setEnabled(true); b3.setEnabled(true); }
和标准输出相联系,它们是System. in和System.out
System是Java中一个功能很强大的类,利用它可以获得很 多Java运行时的系统信息。
【例15.1】
5
输入输出流的分类
——Java流的概念
Java中根据流操作的种类可分为:字节流和字符流 根据流的方向,流可分为两类:输入流和输出流
1 3 2 3
3
目录和文件管理涉及到的类
流输入及输出的一般过程 java.io包中的输入输出流类
4
输入输出流的分类
1 3
Java 流的概念
Java使用流(stream)来执行输入输出(I/O)的功能,流是一 种数据的源头和目的之间的通信途径
2 标准输入输出 3
Java系统事先定义好两个流对象,分别与系统的标准输入
输入流(程序读入数据)
输出流(程序写出数据)
Java流类体系结构3 Java 流类体系结构 4 21 Java 流类体系结构 Java 流类体系结构
6
目录和文件管理
◆public File(String path):如果path ◆boolean mkdir() :生成一个由该对象指定的路径 ◆ boolean exists( ):测试当前File对象 是实际存在的路径,则该File对象 (新目录),若成功,返回 True。 所指示的文件或目录是否存在,若存 表示的是目录;如果path是文件名, ◆boolean mkdirs() :生成一个新的目录,包含子 【例15.2】 在,返回 True 。 文件名的处理 ◆String getName( ):得到一个文 则该 File对象表示的是文件。 目录。若成功,返回 true 。 ◆boolean createNewFile() :创建当前 件的名称 (不包括路径 ) 。 ◆ public File(String path,String ◆ boolean renameTo(File newName) :将当前 File对 文件。 文件属性测试 ◆String getPath( ):得到一个文件 【例15.3】 name) :path 是路径名, name是文 象所代表的路径名改为 newName 所代表的路径名。 ◆boolean canWrite( ):测试当前文件 的路径名。 件名 (不可为空)。 若成功,返回 true 。 getAbsolutePath( ):得到 是否可写。 普通文件信息和工具 ◆ String ◆ public File(File dir,String name): ◆ long lastModified( ):得到文 ◆String list() :列出当前目录下的文件。 ◆ boolean canRead( ) :测试当前文件 一个文件的绝对路径名。 dir 是路径名,name是文件名。 件最近一次修改的时间。 ◆File[] listFiles() :得到该对象所代表的目录下的 是否可读。 ◆String getParent( ):得到一个文 目录操作 【例15.4】 ◆ long length( ):得到文件的长 File对象数组。 ◆ boolean isFile( ):测试当前文件是否 件的上一级目录名。 度,以字节为单位,若不存在, ◆String toString() :得到抽象路径表示法。 是文件 (不是目录 )。 ◆String renameTo(File newName): 返回 0。 isDirectory( ):测试当前文 ◆ boolean 将当前文件名更名为给定文件的 ◆boolean delete( ):删除File对 True。 件是否是目录,若为目录则返回 完整路径。 象代表的文件或目录,目录需 为空。删除成功,返回True。
8
文件的随机访问
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) )。 file, String mode):构 ◆RandomAccessFile(File 的位置 (相对于文件初始位置 ◆void writeInt(int i) RandomAccessFile 类提供的用来读取某种基本数据类型的数据或字符串的方法 造一个随机访问文件流, file为被访问的文件对 ◆long length() :得到文件的长度。 ◆void writeLong(long l) 象, mode 是用来指定存取的模式, mode可以为 ◆ int skipBytes( int n ) :使文件指针向前移 ◆boolean readBoolean() ◆void writeShort(short s)读写)。 r(读 )、w(写)或rw(
第十五章
输入输出流与文件操作
目 录
重点与难点点拨 输入输出流的分类 目录和文件管理 字节流 字符流 文件和随机访问 其他常用的流 综合案例 经典练习题
2
本章知识重点
1 3 2 3 3 4 3
输入输出流的概念 输入输出流的分类 java.io包中流的体系结构 目录和文件管理涉及到的类
3
本章知识难点
22
综合案例(续)
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); } } }
2 3
3 4 3
动指定的 n个字节 ◆byte readByte() ◆RandomAccessFile(String name,String mode): RandomAccessFile 类提供的用来向文件中写入某种基本类型的数据或字符串的方法 ◆char readChar() 构造一个随机访问文件流,以便访问由字符串 ◆double readDouble() name指定名字的文件,mode参数使用同上 ◆float readFloat() ◆int readInt() 和目前文件位置有关的方法 ◆long readLong() ◆short readShort() 【例15.15】 ◆String readLine()
20
综合案例(续)
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));
文件或目录的生成
1 File类 3
2 3
File类的应用
【例15.5】 【例15.6】
7
字节流
1 顺序读/写文件(FileInputStream与FileOutputStream) 3
2 ByteArrayInputStream和ByteArrayOutputStream 3
3
Байду номын сангаас
缓冲区流BufferedInputStream和BufferedOutputStream
23
综合案例(续)
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); } }
18
其他常用的流
1 3
管道流
ZIP文件流 DataInputStream和DataOutputStream 对象流
2 3
3 4 3
19
综合案例
【例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(); }
相关文档
最新文档