JAVA第9章 输入输出课件

上传人:我*** 文档编号:142099049 上传时间:2020-08-16 格式:PPT 页数:78 大小:250KB
返回 下载 相关 举报
JAVA第9章 输入输出课件_第1页
第1页 / 共78页
JAVA第9章 输入输出课件_第2页
第2页 / 共78页
JAVA第9章 输入输出课件_第3页
第3页 / 共78页
JAVA第9章 输入输出课件_第4页
第4页 / 共78页
JAVA第9章 输入输出课件_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《JAVA第9章 输入输出课件》由会员分享,可在线阅读,更多相关《JAVA第9章 输入输出课件(78页珍藏版)》请在金锄头文库上搜索。

1、第9章 Java输入/输出,内容提要,Java对输入/输出(I/O)的支持从JDK1.0开始就有了,它是通过java.io包中的类和接口提供支持的。 JDK 1.4中增加了New I/O(NIO)API,Java NIO API是java.nio包及其子包的一部分。 JDK 7中又新引进了一些包,称作NIO.2,用来对现有技术进行补充。这些新的接口和类通过java.nio.file包及其子包提供。,本章要点,本章首先讨论NIO.2关于文件的I/O,包括Path实例的创建和Files类的使用,然后讨论Java的流式I/O,其中包括:字节流I/O和字符流I/O、SeekableByteChanne

2、l类以及对象流等。,9.1 文件I/O概述,在计算机系统中通常使用文件存储信息和数据。文件存储在目录中,目录以层次结构组织。目录可有一个或多个根结点。根结点下是文件或目录(在Windows系统中称文件夹),每个目录中可包含文件或子目录。,9.1.1 文件系统和路径,当今的大多数操作系统都支持文件和目录,并且允许目录包含子目录。处于目录树顶部的目录称作根目录。 Windows系统可以有多个根目录:C:、D:等,且不支持符号链接。 图9.1显示了一个Windows系统中目录树结构。这里的根目录是D:。,9.1.1 文件系统和路径,9.1.1 文件系统和路径,在文件系统中,文件和目录都是通过路径表示

3、的,路径通常以根结点开头。例如,图9.1中的report.txt文件表示如下: D:studyuserreport.txt 这里,“D:”表示根结点,反斜线()为路径分隔符。,9.1.1 文件系统和路径,路径可以是绝对的,也可以是相对的。 绝对路径是以根元素为起点的路径,例如,D:studyuserreport.txt就是绝对路径。绝对路径包含定位文件的所有信息。 相对路径是不包含根元素的路径,例如,studycomHello.java是相对路径。只通过相对路径不能定位文件,要准确定位文件还需要另外的路径信息。,9.1.2 Path对象,在Java 7之前,文件和目录用File对象表示。由于使

4、用File类存在着许多不足,因此在Java 7中应使用NIO.2的java.nio.file.Path接口代替File。 Path对象在文件系统中表示一个路径,可以是一个文件、一个目录,也可以是一个符号链接,它还可以表示一个根目录。,9.1.2 Path对象,在Windows系统中,Path对象使用Windows语法表示(如,D:studycomdemo)。与Path对应的文件或目录可以不存在。,1. FileSystem类,FileSystem表示一个文件系统,它是一个抽象类,可以调用FileSystems类的getDefault()静态方法来获取当前的文件系统。 FileSystem fi

5、leSystem = FileSystems.getDefault();,1. FileSystem类,Path getPath(String first, String more) String getSeparator() Iterable getRootDirectores() boolean isOpen() boolean isReadOnly(),2. 创建Path实例,Path实例包含确定文件或目录位置的信息。在创建Path实例时,通常要提供一系列名称,如根元素或文件名等。一个Path可以只包含路径名或文件名。 可以使用Paths(注意是复数)类的get()方法创建Path对象:

6、,2. 创建Path实例,Path p1 = Paths.get(D:studycomHello.java); Path p2 = Paths.get(args0); Path p3 = Paths.get(URI.create( file:/users/joe/FileTest.java);,3. 检索路径信息,Path对象可以看做是一个名称序列,每一级目录可以通过索引指定。 目录结构的最顶层索引为0,目录结构的最底层元素索引是n-1,n是总层数。 例如,getName(0)方法将返回最顶层目录名称。,3. 检索路径信息,Path path = Paths.get(D:studyuserre

7、port.txt); System.out.println(toString: + path.toString(); System.out.println(getFileName: + path.getFileName(); System.out.println(getName(0): + path.getName(0); System.out.println(getNameCount: + path.getNameCount(); System.out.println(subpath(0,2): + path.subpath(0,2); System.out.println(getParen

8、t: + path.getParent(); System.out.println(getRoot: + path.getRoot();,9.2 Files类操作,java.nio.file.Files类是一个功能非常强大的类。 该类定义了大量的静态方法用来读、写和操纵文件和目录。Files类主要操作Path对象。,9.2.1 创建和删除目录和文件,public static Path createDirectory(Path dir, FileAttributeattrs) 创建由dir指定的目录,参数attrs指定目录的属性,如果不需要设置属性,可忽略该参数。如果创建的目录已经存在,该方法

9、将抛出FileAlreadyExistsException异常。,9.2.1 创建和删除目录和文件,public static Path createFile(Path file, FileAttributeattrs) 创建由file指定的文件,参数attrs指定文件的属性,如果不需要设置属性,可忽略该参数。如果文件的父目录不存在,该方法会抛出一个IOException异常。如果已经存在一个与file指定的文件同名的文件,将抛出FileAlreadyExistsException异常。,9.2.1 创建和删除目录和文件,public static void delete(Path path)

10、 删除由path指定的目录、文件或符号链接。如果path是一个目录,要求目录必须为空。如果path是一个符号链接,将只删除链接,链接所指的目录不会被删除。 如果path不存在,则抛出NoSuchFileException异常。,9.2.1 创建和删除目录和文件,public static void deleteIfExists(Path path) 如果path对象存在则将其删除。如果path是目录,要求目录必须为空,如果不为空则抛出DirectoryNotEmptyException异常。,9.2.2 文件属性操作,可以使用Files类的方法检查Path对象表示的文件或目录是否存在、是否可读

11、、是否可写、是否可执行等。,9.2.2 文件属性操作,public static boolean exists(Path path, LinkOption):检查path所指的文件或目录是否存在。 public static boolean notExists(Path path, LinkOption):检查path所指的文件或目录是否不存在。注意,!Files.exists(path)与Files.notExists(path)并不等价。如果exists(path)与notExists(path)都返回false,表示文件不能被检验。,9.2.2 文件属性操作,public static

12、boolean isReadable(Path path):检查path所指的文件或目录是否可读。 public static boolean isWritable(Path path):检查path所指的文件或目录是否可写。 public static boolean isExecutable(Path path):检查path所指的文件或目录是否可执行。 static boolean isRegularFile(Path path, LinkOption.):如果指定的Path对象是一个文件返回true。,9.2.2 文件属性操作,Files类中包含了下面一些方法获得或设置文件的一个属性。

13、 static long size(Path path):返回指定文件的字节大小。 static boolean isDirectory(Path path, LinkOptionoptions):如果指定的Path对象是一个目录返回true。 static boolean isHidden(Path path):如果指定的Path对象是隐藏的返回true。,9.2.2 文件属性操作,static FileTime getLastModifiedTime(Path path, LinkOption. options):返回指定文件的最后修改时间。 static Path setLastModi

14、fiedTime(Path path, FileTime) :设置指定文件的最后修改时间。 static UserPrincipal getOwner(Path path, LinkOption. options) :返回指定文件的所有者。 static Path setOwner(Path path, UserPrincipal) :设置指定文件的所有者。,9.2.2 文件属性操作,下面程序演示了Files类几个方法的使用。 程序9.1 FileDemo.java,9.2.3 文件和目录的复制与移动,使用Files类的copy()方法可以复制文件和目录,使用move()方法可以移动目录和文件

15、。copy()方法的一般格式为: public static Path copy( Path source, Path target, CopyOptionoptions) source为源文件,target为目标文件,9.2.3 文件和目录的复制与移动,参数options为CopyOption接口对象,它是java.nio.file包的一个接口,StandardCopyOption枚举是CopyOption接口的一个实现,提供了下面三个复制选项: ATOMIC_MOVE,将移动文件作为一个原子的文件系统操作。 COPY_ATTRIBUTES,将属性复制到新文件中。 REPLACE_EXIST

16、ING,如果文件存在,将它替换掉。,9.2.3 文件和目录的复制与移动,下面代码说明了copy()方法的使用。 Path source = Paths.get(D:studydemoreport.txt), target = Paths.get(D:studydemobackup.txt); try Files.copy(source,target, StandardCopyOption.REPLACE_EXISTING); catch (NoSuchFileException nse) nse.printStackTrace(); catch (IOException ioe) ioe.printStackTrace(); ,9.2.5 小文件的读写,Files类提供了从一个较小的二进制文件和文本文件读取和写入的方法。readAllBytes()方法和readAllLines()方法分别是从二进制文件和文本文件读取。这些方法可以自动打开和关闭流,但不能处理大文件。,9.2.5 小文件的读写,public static byt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号