java 基础 (IO 流 File 类)
- java.io.File类: 文件和文件目6径的抽象表示形式,与平台无关
- File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果
需要访问文件内容本身,则需要使用输入/输出流。 - 想要在 Java 程序中表示一个真实存在的文件或目录,那么必须有一个 File 对象,但是 Java 程序中的一个 File 对象,可能没有一个真实存在的文件或目录。
- File对象可以作为参数传递给流的构造器
* public File(String pathname) 以 pathname 为路径创建 File对象,可以是绝对路径或者相对路径,如果 pathname 是相对路径,则默认的当前路径在系统属性 user.dir 中存储。 - 绝对路径: 是一个固定的路径,从盘符开始 - 相对路径: 是相对于某个位置开始 * public File(String parent,String child) 以 parent 为父路径,child 为子路径创建 File 对象。 * public File(File parent,String child) 根据一个父File对象和子文件路径创建File对象
* 路径中的每级目录之间用一个路径分隔符隔开。 * 路径分隔符和系统有关: - windows 和 DOS 系统默认使用 “\” 来表示 - UNIX 和 URL 使用 “/” 来表示 * Java 程序支持跨平台运行,因此路径分隔符要慎用。 * 为了解决这个隐患,File 类提供了一个常量: public static final String separator。根据操作系统,动态的提供分隔符。
* File 类的创建功能 - public boolean createNewFile(): 创建文件。若文件存在,则不创建,返回false - public boolean mkdir(): 创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。 - public boolean mkdirs(): 创建文件目录。如果上层文件目录不存在,一并创建 注意事项: 如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。 * File 类的删除功能 public boolean delete(): 删除文件或者文件夹 删除注意事项: Java 中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录
File类的使用 1. File 类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) 2. FiLe 类声明在 java.io 包下 3. Fil 类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法, 并来涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用 IO 流来完成。
FileTest.java
package com.klvchen.java3; import org.junit.Test; import java.io.File; import java.io.IOException; public class FileTest { @Test public void test1(){ //构造器1 File file1 = new File("hello.txt");//相当于当前 module File file2 = new File("G:\\java_course\\day08\\he.txt"); System.out.println(file1); System.out.println(file2); // 构造器2 File file3 = new File("G:\\tmp", "javaSenior"); System.out.println(file3); // 构造器3 File file4 = new File(file3, "hi.txt"); System.out.println(file4); } /* 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数组 */ @Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new File("G:\\tmp\\hi.txt"); System.out.println(file1.getAbsoluteFile()); System.out.println(file1.getPath()); System.out.println(file1.getName()); System.out.println(file1.getParent()); System.out.println(file1.length()); System.out.println(file1.lastModified()); System.out.println(); System.out.println(file2.getAbsoluteFile()); System.out.println(file2.getPath()); System.out.println(file2.getName()); System.out.println(file2.getParent()); System.out.println(file2.length()); System.out.println(file2.lastModified()); } @Test public void test3(){ File file = new File("G:\\java_course"); String[] list = file.list(); for (String s : list) { System.out.println(s); } System.out.println(); File[] files = file.listFiles(); for (File f : files) { System.out.println(f); } } /* public boolean renameTo(File dest):把文件重命名为指定的文件路径 比如:file1.renameTo(file2)为例: 要想保证返回true,需要file1在硬盘中是存在的,且fiLe2不能在硬盘中存在。 */ @Test public void test4(){ File file1 = new File("hello.txt"); File file2 = new File("G:\\tmp\\hi.txt"); boolean renameTo = file1.renameTo(file2); System.out.println(renameTo); } /* public booLean isDirectory():判断是否是文件目录 public boolean isFile() :判断是否是文件 public booLean exists() :判断是否存在 public booLean canRead() :判断是否可读 public boolean canwrite() :判断是否可写 public boolean isHidden() :判断是否隐藏 */ @Test public void test5(){ File file1 = new File("hello.txt"); file1 = new File("hello1.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("G:\\tmp"); System.out.println(file2.isDirectory()); System.out.println(file2.isFile()); System.out.println(file2.exists()); System.out.println(file2.canRead()); System.out.println(file2.canWrite()); System.out.println(file2.isHidden()); } @Test public void test6() throws IOException { File file1 = new File("hi.txt"); if (!file1.exists()) { file1.createNewFile(); System.out.println("创建成功"); } else { file1.delete(); System.out.println("删除成功"); } } @Test public void test7(){ //文件目录的创建 File file1 = new File("G:\\tmp\\io1"); boolean mkdir = file1.mkdir(); if (mkdir) { System.out.println("创建成功1"); } File file2 = new File("G:\\tmp\\io2"); boolean mkdir1 = file2.mkdir(); if (mkdir1) { System.out.println("创建成功2"); } // 要想删除成功,io2 文件目录下不能有子目录或文件 File file3 = new File("G:\\tmp\\io2"); System.out.println(file3.delete()); } }