IO流
File类的使用
-
java.io.File
类:文件和文件目录路径的抽象表示形式,与平台无关。
-
File
能新建、删除、重命名文件和目录,但
File
不能访问文件内容本身。 如果需要访问文件内容本身,则需要使用输入/输出流。
- 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个
File
对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
-
File
对象可以作为参数传递给流的构造器。
-
如何创建
File
类的实例
public File(String pathname):以pathname
为路径创建
File
对象,可以是绝对路径或者相对路径,如果
pathname
是相对路径,则默认的当前路径在系统属性
user.dir
中存储。
File file1 = new File(\"hello.txt\");// 相对于当前moduleFile file2 = new File(\"F:\\\\Java\\\\JavaSenior\\\\month12-day07\\\\he.txt\");// 绝对路径System.out.println(file1);// hello.txtSystem.out.println(file2);// F:\\Java\\JavaSenior\\month12-day07\\he.txt
public File(String parent,String child):以
parent
为父路径,
child
为子路径创建
File
对象。
File file3 = new File(\"F:\\\\Java\\\\JavaSenior\",\"month12-day07\");System.out.println(file3);// F:\\Java\\JavaSenior\\month12-day07
public File(File parent,String child):根据一个父
File
对象和子文件路径创建
File
对象。
File file4 = new File(file3, \"hi.txt\");System.out.println(file4); // F:\\Java\\JavaSenior\\month12-day07\\hi.txt
-
相对路径:相较于某个路径下,指明的路径
绝对路径:包含盘符在内的文件或文件路径 -
路径分隔符
windows和DOS系统:\\\\
unix和URL:/
Java程序支持跨平台运行,因此路径分隔符要慎用。
为了解决这个隐患,File类提供了一个常量:public static final String separator
。根据操作系统,动态的提供分隔符。
File file1 = new File(\"d:\\\\atguigu\\\\info.txt\");File file2 = new File(\"d:\" + File.separator + \"atguigu\" + File.separator + \"info.txt\");File file3 = new File(\"d:/atguigu\");
File类的获取功能
public String getAbsolutePath():获取绝对路径 。
public String getPath() :获取路径 。
public String getName() :获取名称 。
public String getParent():获取上层文件目录路径。若无,返回
null
。
public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值 。
如下方法适用于文件目录
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组 。
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的
File
数组。
public void Test2() {File file1 = new File(\"hello.txt\");File file2 = new File(\"F:\\\\OfficeFile\\\\JAVA_IO\\\\hi.txt\");System.out.println(file1.getAbsolutePath());System.out.println(file1.getName());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(new Date(file1.lastModified()));System.out.println();System.out.println(file2.getAbsolutePath());System.out.println(file2.getName());System.out.println(file2.getParent());System.out.println(file2.length());System.out.println(file2.lastModified());}
public void test3() {File file = new File(\"F:\\\\Java\\\\JavaSenior\\\\month12-day07\");String[] list = file.list();for (String s : list) {System.out.println(s);}File[] files = file.listFiles();for (File s : files) {System.out.println(s);}}
public boolean renameTo(File dest):把文件重命名为指定的文件路径。
以 file1.renameTo(file2) 为例:
要像保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
public void test4() {File file1 = new File(\"hello.txt\");File file2 = new File(\"F:\\\\OfficeFile\\\\JAVA_IO\\\\hi.txt\");boolean renameTo = file1.renameTo(file2);System.out.println(renameTo);}
File类常用方法
File类的判断功能
public boolean isDirectory():判断是否是文件目录。
public boolean isFile() :判断是否是文件。
public boolean exists() :判断是否存在。
public boolean canRead() :判断是否可读。
public boolean canWrite() :判断是否可写。
public boolean isHidden() :判断是否隐藏
public void test5() {File file1 = new File(\"hello.txt\");System.out.println(file1.isDirectory());System.out.println(file1.isFile());System.out.println(file1.exists());System.out.println(file1.canRead());System.out.println(file1.canWrite());System.out.println(file1.isHidden());System.out.println();File file2 = new File(\"F:\\\\OfficeFile\\\\JAVA_IO\");System.out.println(file1.isDirectory());System.out.println(file1.isFile());System.out.println(file1.exists());System.out.println(file1.canRead());System.out.println(file1.canWrite());System.out.println(file1.isHidden());}
File类的创建硬盘中对应文件或目录
public boolean createNewFile() :创建文件。若文件存在,则不创建,返回
false
。
public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。 如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建。
public boolean delete():删除磁盘中的文件或者文件夹 删除注意事项: Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。
文件的创建:
public void test6() {File file1 = new File(\"Hi.txt\");if (!file1.exists()) {try {boolean newFile = file1.createNewFile();if (newFile) System.out.println(\"创建成功\");} catch (IOException e) {e.printStackTrace();}}else {boolean delete = file1.delete();if (delete) System.out.println(\"删除成功\");}}
文件目录的创建:
public void test7() {File file1 = new File(\"F:\\\\OfficeFile\\\\JAVA_IO\\\\IO01\\\\io03\");boolean mkdir = file1.mkdir();if (mkdir) System.out.println(\"创建成功1\");File file2 = new File(\"F:\\\\OfficeFile\\\\JAVA_IO\\\\IO02\\\\io04\");boolean mkdirs = file2.mkdirs();if (mkdirs) System.out.println(\"创建成功2\");}
FIle
类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用
IO
流来完成。