《流与文件的基本操作》由会员分享,可在线阅读,更多相关《流与文件的基本操作(20页珍藏版)》请在金锄头文库上搜索。
1、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
2、目录为单参数创建文件类对象 ,目录视为特殊文件 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的各种属性 /文件是否可读可写 Syste
3、m.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的Fi
4、le(文件)类 (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,St
5、ring fileName) ; File类对象中与文件相关的的重要方法 与文件名相关的方法 String getName() 获得文件名; String getPath() 获取文件路径; String getAbsolutePath() 获取文件绝对路径 ; String getParent() 获取文件父目录名 称; boolean renameTo(File newName) 文件改名,成功返回true,否则返回false; boolean delete() 删除对象指向的文件,成功返回true,否则返回false boolean createNewFile() 以对象路径名创建目录,
6、失败抛出 IOException 文件对象的测定方法 boolean exists() 文件对象是否存在 boolean canWrite() 文件对象是否可写 boolean canRead() 文件对象是否可读 boolean setReadOnly() 将所引用的文件设为只读 boolean isFile() 文件对象是否是文件 boolean isHidden() 文件对象是否是隐藏文件boolean isAbsolute() 文件对象是否是绝对路径 常用的获取文件信息方法 long lastModified() 获取文件最后修改时间 long length() 获取文件长度。 Fil
7、e类对象中与文件相关的的重要方法 【应用拓展】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
8、void main(String args) tryFile 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.clo
9、se(); 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)文件ByteDataFileI
10、nputStream DataInputStream内存输入输出类 流 输入流 输出流 数据输入数据输出 将待处理数据送 入程序进行处理把处理结果从程 序送到输出设备 、磁盘或网络字节流 字符流 InputStream OutputStream Reader Writer 以字节为处理单 位或面向字节 以字符为处理单 位或面向字符 RandomAccessFile 按功能分按结构分InputStream FileInputStreamPipedIntputStreamFilterInputStreamByteArrayInputStreamSequencedInputStreamStringB
11、ufferInputStreamObjectInputStreamDataInputStreamBufferedInputStreamLineNumberInputStreamPushbackInputStream字节输入流类层次向另一个输入流添加“推回”或“ 取消读取”一个字节的功能 提供跟踪当前行号的附加功能 字节输入流类的方法 available(): 返回流中能立即读取的字节数 close():关闭流。 mark():标记流中位置。 markSupported():是否支持标记操作。 read():从流中读取数据。 public int read():读流中一个字节,若流结束则返回 -
12、1 public int read(byte b ):从流中读字节填满字节数 组b,返回所读字节数,若流结束则返回-1。 public int read(byte b ,int off, int len):从流中读 字节填入boff开始处,返回所读字节数,若流结束 则返回-1。 reset():复位流中标记的位置。 skip():跳过流中若干字节。OutputStreamFileOutputStreamPipeOutputStreamFilterOutputStreamByteArrayOutputStreamObjectOutputStreamDataOutputStreamBuffered
13、OutputStreamPrintStream字节输出流类层次字节输出流类的重要方法 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字符输出流类层次