Java IO-1流学习
1.Java IO概述
IO概述
Java IO即Java 输入输出系统。不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要考虑和哪种媒介进行IO(文件、控制台、网络等等),我们还要考虑具体和它们的通信方式(顺序、随机、二进制、按字符、按字、按行等等)。Java类库的设计者通过设计大量的类来攻克这些难题,这些类就位于java.io包中。
在JDK1.4之后,为了提高Java IO的效率,Java又提供了一套新的IO,Java New IO简称Java NIO。它在标准java代码中提供了高速的面向块的IO操作。
根据针对数据类型的处理,分为字节流和字符流:
1.字节流中包含输入流【InputStream】和输出流【outputStream】两种情况
在Java中,InputStream和outputStream是Java.io包中所有字符流API类的基类。
2.字符流包含输入流【Reader】和输出流【Writer】两种情况
在Java中,Reader和Writer是java.io包中所有字符流API的基类。
API规则
由这四个抽象类派生出来的子类的名称是以其抽象父类名称为后缀,以功能为前缀。所以判定某一个具体的流的父类,就找出它的结尾的类名是什么,它的抽象父类就是什么。
e.g. 一个类的名字叫FileInputStream,它是以InputStream为结尾的,所以这个FileInputStream的抽象父类就是InputStream类。这个类的功能从前缀进行判断。由于前缀是File,所以这个类的功能是用用于处理文件的字节输入流。
2.File类
File(String pathname)
根据一个路径得到File对象
File(String parent, String child)
根据一个目录和一个子文件/目录得到File对象
File(File parent, String child)
根据一个父File对象和一个子文件/目录得到File对象
代码示例:
需求:创建一个File类型对象,路径分为相对路径和绝对路径,判断该对象对应的文件/路径在电脑中是否存在
exists()用于判断File对象是否存在
File f1 = new File(相对路径/绝对路径);
System.out.println(f1.exists());
File f2 = new File(父路径,子路径/文件名);
System.out.println(f2.exists());
File f3 = new File(File类型对象,子路径/文件名);
System.out.println(f3.exists());
1)File类的创建功能
boolean mkdir()
创建文件夹,如果存在这样的文件夹,就不创建了,路径不存在返回flase
boolean mkdirs()
创建文件夹,如果父文件夹不存在,会帮你创建出来
boolean createNewFile()
创建文件,路径不存在抛出异常,如果存在这样的文件,就不创建了
注意事项:若创建文件或者文件夹忘了写盘符路径,那么默认在项目路径下
需求:指定路径的File对象,mkdir创建文件夹,路径存在和路径不存在
需求:指定路径的File对象,mkdirs创建文件夹,路径存在和路径不存在
需求:指定路径的File对象,createNewFile创建文件,路径存在和路径不存在
2)File类的获取功能
String getAbsolutePath()
获取文件的绝对路径
File getAbsoluteFile()
获取文件的绝对路径
String getPath()
获取文件的相对路径
String getName()
获取名称
String[] list()
获取指定目录下的所有文件或者文件夹的名称数组
File[] listFiles()
获取指定目录下的所有文件或者文件夹的File数组
File[] listRoots()
获取电脑中的盘符
String[] list (FilenameFilter filter)
获取指定目录下被FilenameFilter筛选后的文件,返回String类型数组
注意:FilenameFilter实现类中的accept(File file,String name)中两个参数,第一个参数为File对象可以表示为一个路径,第二个参数为该路径下的文件名
File[] list (FilenameFilter filter)
获取指定目录下被FilenameFilter筛选后的文件,返回String类型数组
File[] listFiles (FileFilter filter)
获取指定目录下被FileFilter筛选后的文件,返回File类型数组
注意:FileFilter实现类中的accept(File file)只有一个参数,该参数指代的是一个文件的路径,和FilenameFilter中的区别在于,FilenameFilter中两个参数合在一起才能指定一个文件,而FileFilter则没有将路径和文件名分开,通过观察两个接口的名称也能看出二者的区别
3)File类的判断功能
boolean exists()
判断路径表示的文件或者文件夹是否存在
boolean isDirectory()
判断当是否是一个文件夹
boolean isFile()
判断当前是否是一个文件
4)File类的删除功能
boolean delete()
若是文件就直接删除,若是文件夹则必须是空文件夹
代码示例:
File f1 = new File("D:\\work\\STS\\JavaSE-Day23-IO\\2.txt\\aaa\\bb");
System.out.println(f1.delete());
//删除文件
File f2 = new File(f1,"cc");
System.out.println(f2.delete());
File f3 = new File(f1,"dd.txt");
System.out.println(f3.delete());