
流与文件的基本操作.ppt
20页3.1 流与文件的基本操作 主讲教师:董婷一、知识能力目标• 理解输入输出流的概念及分类; • 掌握Java文件管理的方法;• 掌握利用字节流进行文件顺序访问;• 掌握利用字符流进行文件顺序访问 二、项目22 查询文件属性 • 查询指定文件的属性 f1.exists()f2.exists()f1.canRead()f1.canWrite()f1.isFile()f1.isDirectory()f1.isHidden()f1f21.程序代码import java.io.*; class UserFile {public static void main(String args[ ]){ //以当前目录下的newdir目录为单参数创建文件类对象 ,目录视为特殊文件 File p1 = new File(“./newdir“); File f1 = new File(p1,“newfile.txt“);//指定路径, 双参数创建文件类对象File f2 = new File(“ch81.java“); //单参数创建文 件类对象//判断文件是否存在System.out.println(“newfile exist:\t“+f1.exists());//输出判断结果System.out.println(“ch81.java exist:\t“+f2.exists()); //判断文件f1的各种属性 //文件是否可读可写 System.out.println(“---newfile---“);System.out.println(“Readable:\t“+f1.canRead( ));System.out.println(“Writable:\t“+f1.canWrite ()); //是否是文件、是否是目录、是否是隐藏的 System.out.println(“Is file:\t“+f1.isFile()); System.out.println(“Is directory:\t“+f1.isDirectory());System.out.println(“Is hidden:\t“+f1.isHidden());}} 2.相关知识 Java的File(文件)类 (1)单参数的构造方法:以路径dirPath创建一个File对象 public File(String dirPath); • dirPath可以是一个路径名,也可以是一个包含路径的文件 名 • 可能抛出NullPointerException。
(2)双参数的构造方法 • 以路径名dirPath和文件名fileName创建一个File对象public File(String dirPath,String fileName); • 先定义一个表示路径的File对象dirObj,再以dirObj、文 件名fileName创建一个File对象 public File(File dirObj,String fileName) ; File类对象中与文件相关的的重要方法 ◎ 与文件名相关的方法 • String getName() 获得文件名; • String getPath() 获取文件路径; • String getAbsolutePath() 获取文件绝对路径 ; • String getParent() 获取文件父目录名 称; • boolean renameTo(File newName) 文件改名,成功返回true,否则返回false; • boolean delete() 删除对象指向的文件,成功返回true,否则返回false • boolean createNewFile() 以对象路径名创建目录,失败抛出 IOException ◎ 文件对象的测定方法 • boolean exists() 文件对象是否存在 • boolean canWrite() 文件对象是否可写 • boolean canRead() 文件对象是否可读 • boolean setReadOnly() 将所引用的文件设为只读 • boolean isFile() 文件对象是否是文件 • boolean isHidden() 文件对象是否是隐藏文件boolean isAbsolute() 文件对象是否是绝对路径 ◎ 常用的获取文件信息方法 • long lastModified() 获取文件最后修改时间 • long length() 获取文件长度。
File类对象中与文件相关的的重要方法 【应用拓展】File类对象中与目录相关的的重要方法 • boolean isDirectory() 文件对象是否是目录 • boolean mkdir() 以对象路径名创建目录,操作成功返回true • boolean mkdirs() 以对象路径名创建目录,操作成功返回true • String[] list() 返回目录中的文件名和 目录名 三、项目23 复制文件 • 将文件“file1.txt“复制到同一目录下的“file2.txt“ 1.程序代码 //FileStream源代码如下:import java.io.*;class FileStream {public static void main(String args[]) { try{File inFile=new File(“file1.txt“);//指定源文件File outFile=new File(“file2.txt“);//指定目标文件FileInputStream fis=new FileInputStream(inFile);//建 立文件输入流对象FileOutputStream fos=new FileOutputStream(outFile);//建立文件输出流对象int c; while((c=fis.read())!=-1) //逐字节从源文件中输入,再输出 到fos流fos.write(c);fis.close(); fos.close();} catch(FileNotFoundException e) {System.out.println(“FileStreamsTest: “+e);} catch(IOException e) {System.err.println“FileStreamsTest: “+e);}} } 2.相关知识 • Java通过java.io包提供独立于设备和平台的流( stream)操作类 –“数据流”:数据通信通道 –使用流的关键是隐蔽实际输入与输出设备 内存文件文件输入流 (FileInputStream)文件输出流 (FileOutputStream)文件ByteDataFileInputStream DataInputStream内存输入输出类 流 输入流 输出流 数据输入数据输出 将待处理数据送 入程序进行处理把处理结果从程 序送到输出设备 、磁盘或网络字节流 字符流 InputStream OutputStream Reader Writer 以字节为处理单 位或面向字节 以字符为处理单 位或面向字符 RandomAccessFile 按功能分按结构分InputStream FileInputStreamPipedIntputStreamFilterInputStreamByteArrayInputStreamSequencedInputStreamStringBufferInputStreamObjectInputStreamDataInputStreamBufferedInputStreamLineNumberInputStreamPushbackInputStream字节输入流类层次向另一个输入流添加“推回”或“ 取消读取”一个字节的功能 提供跟踪当前行号的附加功能 字节输入流类的方法 ① available(): 返回流中能立即读取的字节数 ② close():关闭流。
③ mark():标记流中位置 ④ markSupported():是否支持标记操作 ⑤ read():从流中读取数据 • public int read():读流中一个字节,若流结束则返回 -1 • public int read(byte b[ ]):从流中读字节填满字节数 组b,返回所读字节数,若流结束则返回-1 • public int read(byte b[ ],int off, int len):从流中读 字节填入b[off]开始处,返回所读字节数,若流结束 则返回-1 ⑥ reset():复位流中标记的位置 ⑦ skip():跳过流中若干字节OutputStreamFileOutputStreamPipeOutputStreamFilterOutputStreamByteArrayOutputStreamObjectOutputStreamDataOutputStreamBufferedOutputStreamPrintStream字节输出流类层次字节输出流类的重要方法 ① close() 关闭流 ② flush() 将其余数据刷新到流中 ③ write() 将数据写到流中。
• public void write(int c)将整数数据的低字节写到输出流 • public void write(byte c[ ]) 将字节数组b 中的数据写到输出流 • public abstract void write(byte [ ],int off, int len) 将字节数组b中从off开始的len个字节数据写到输出流FileReaderReaderBufferedReaderCharArrayReaderInputStreamReaderFilterReaderPipedReaderStringReaderPushbackReaderLineNumberReader字符输入流类层次FileWriterWriterBufferedWriterCharArrayWriterOutputStreamWriterFilterWriterPipedWriterStringWriter字符输出流类层次。












