如何对文件操作
文件是存储在硬盘上的, 直接通过代码操作硬盘不方便, 就在内存中创建一个对应的对象, 操作这个对象就可以间接的影响到硬盘中的文件了.
Java 中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有 File 对象,并不代表真实存在该文件。
File 类
构造方法
普通方法
代码1(文件获取):
public class Test { public static void main(String[] args) throws IOException { File file = new File("./hello.txt"); System.out.println(file.getParent()); // 获取File对象父目录文件路径 System.out.println(file.getName()); //获取File对象名称 System.out.println(file.getPath()); //获取File对象文件路径 System.out.println(file.getAbsolutePath()); //获取File对象绝对路径 System.out.println(file.getCanonicalPath()); //获取File对象修饰过的绝对路径 } }
代码2(文件的删除创建):
public class Test { public static void main(String[] args) throws IOException, InterruptedException { File file = new File("hello.txt"); System.out.println("1 :" + file.exists()); //判断File对象代表文件是否存在 System.out.println("2 :" + file.isDirectory()); //判断File对象代表文件是否是目录 System.out.println("3 :" + file.isFile()); //判断File对象代表文件是否是一个普通文件 System.out.println("4 :" + file.createNewFile()); //创建File对象代表文件, 成功返回true System.out.println("5 :" + file.createNewFile()); System.out.println("6 :" + file.exists()); System.out.println("7 :" + file.isDirectory()); System.out.println("8 :" + file.isFile()); Thread.sleep(5000); //睡眠5s 便于观察文件是否存在 System.out.println("9 :" + file.delete()); //删除该文件, 成功返回true System.out.println("10 :" + file.exists()); } }
在在睡眠 5s 时, 我们观察到, 文件确实被创建出来了.
代码3(另一种文件删除:deleteOnExit) :
public class Test { public static void main(String[] args) throws IOException, InterruptedException { File file = new File("hello.next"); System.out.println(file.createNewFile()); System.out.println(file.exists()); file.deleteOnExit(); System.out.println(file.exists()); Thread.sleep(5000); } }
观察文件目录发现, hello.txt 文件在程序运行结束时被删除了.
代码4(目录创建) :
public class Test { public static void main(String[] args) { File file = new File("目录"); System.out.println(file.isDirectory()); System.out.println(file.isFile()); System.out.println(file.mkdir()); System.out.println(file.isDirectory()); System.out.println(file.isFile()); } }
成功创建目录 :
创建子目录
public class Test { public static void main(String[] args) { File file = new File("a/b"); //要求两个目录不存在 System.out.println(file.mkdir()); //没有中间目录不能创建 System.out.println(file.mkdirs()); //没有中间目录 就会创建中间目录 } }
代码4(文件重命名) :
public class Test { public static void main(String[] args) throws IOException { File file1 = new File("hello.txt"); //该文件得存在 file1.createNewFile(); File file2 = new File("world.txt"); //要求该文件不存在 System.out.println(file1.renameTo(file2)); System.out.println(file1.exists()); System.out.println(file2.exists()); } }
可以理解为 hello.txt 的数据换了个名字继续存在.