给Java初学者的学习笔记

第17章 文件类

2019-04-16  本文已影响144人  yangsg

Java提供了对操作系统中文件进行操作的文件类,其类名是java.io.File类,其中包含了对文件和目录(文件夹)操作的一系列API方法。
需要注意的是,

1. 静态属性

主要用于表示系统中路径分隔符,在不同的系统中有不同的分隔符。比如“C:\Program Files\Java”路径中的“\”就是路径分隔符。

2.构造方法
3. API方法
File f = new File("c:/1.txt"); //只读文件
boolean b1 = f.canRead(); // true
boolean b2 = f.canWrite(); // false

File f = new File("c:/1.txt"); //文件不存在
f.createNewFile(); //创建文件

如果想通过该方法在c盘下创建一个abc目录,执行下面的代码是不成功的,只能建立一个没有扩展名的,名字是abc的文件

File f = new File("c:/abc"); 
f.createNewFile(); 
名字是abc没有扩展名的文件

如果想创建一个在c盘xyz目录下1.txt文档,执行下面的代码是不成功的,因为c盘中没有xyz目录。createNewFile()方法不会创建中间所需的目录

File f = new File("c:/xyz/1.txt"); 
f.createNewFile(); 
IO异常
File f = new File("c:/abc"); 
f.mkdir();

示例:在c盘下创建目录abc/xyz,成功。因为c盘刚刚在上一个示例中创建了abc目录,所以可以在abc中创建xyz目录

File f = new File("c:/abc/xyz"); 
f.mkdir();

示例:在c盘下创建目录x/y/z,失败。因为c盘在创建目录z时没有找到前置的父目录x/y,但程序不会出现异常。

File f = new File("c:/x/y/z"); 
f.mkdir();

File f = new File("c:/x/y/z"); 
f.mkdirs();

File f = new File("c:/x/y/z"); 
boolean b = f.exists() //true

如果想在c:/1/2/3/中创建haha.txt,比较好的做法是

File path = new File("c:/1/2/3");
if(!path.exists()){// 先判断目录是否存在
  path.mkdirs();
}
File file = new File(path, "haha.txt"); //在path对象表示的路径(c:/1/2/3)中创建haha.txt文件
file.createNewFile();

File f = new File("c:/1.txt");
f.delete();

File f1 = new File("c:/1.txt");
File f2 = new File("c:/a/b/c");
String a = f1.getName(); // 1.txt
String b = f2.getName(); // c

File f1 = new File("c:/1.txt");
File f2 = new File("c:/a/b/c");
String a = f1.getParent(); // c:/
String b = f2.getParent(); // c:/a/b
File f1 = new File("c:/1.txt");
File f2 = new File("c:/a/b/c");
File a = f1.getParentFile(); /* c:/ */
File b = f2.getParentFile(); /* c:/a/b */

File f1 = new File("c:/1.txt");
File f2 = new File("c:/a/b/c");
String a = f1.getPath(); // c:/1.txt
String b = f2.getPath(); // c:/a/b/c

File f = new File("c:/abc");
System.out.println(f.length());
文件的大小
File f1 = new File("c:/1.txt");
File f2 = new File("c:/a/b/c");
boolean a = f1.isFile(); // true
boolean b = f2.isFile(); // false
File f1 = new File("c:/1.txt");
File f2 = new File("c:/a/b/c");
boolean a = f1.isDirectory(); // false
boolean b = f2.isDirectory(); // true

File f1 = new File("c:/1.txt");
File f2 = new File("c:/a/b/c");
boolean a = f1.isHidden(); // true
boolean b = f2.isHidden(); // false

File f = new File("C:/Program Files/Java/jdk1.8.0_101");
String[] fs = f.list();
for(String t : fs) {
    System.out.println(t);
}

运行结果


运行结果
File f = new File("C:/Program Files/Java/jdk1.8.0_101");
File[] fs = f.listFiles();
for(File t : fs) {
    System.out.println(t.getName()+"\t"+t.length()+"Byte");
}

运行结果


运行结果
4. 练习

在控制台上模拟windows系统的cmd窗口,并实现以下指令

上一篇 下一篇

猜你喜欢

热点阅读