文件类不仅仅只表示存在的文件或目录。我们也可以用文件对象来创建新的目录或不存在的
整个目录路径。我们还可以查看文件的特性(如:大小,最后修改日期,读/写),来检查
某个文件对象代表的是一个文件还是一个目录,并可以删除这个文件。下面这段程序展示了
文件类的一些其他方法(请参考 java.sun.com 上 HTML 文档,获得全套说明)。
//: c12:MakeDirectories.java
// Demonstrates the use of the File class to
// create directories and manipulate files.
// {Args: MakeDirectoriesTest}
import com.bruceeckel.simpletest.*;
import java.io.*;
public class MakeDirectories {
private static Test monitor = new Test();
private static void usage() {
System.err.println(
"Usage:MakeDirectories path1 ...\n" +
"Creates each path\n" +
"Usage:MakeDirectories -d path1 ...\n" +
"Deletes each path\n" +
"Usage:MakeDirectories -r path1 path2\n" +
"Renames from path1 to path2");
System.exit(1);
}
private static void fileData(File f) {
System.out.println(
"Absolute path: " + f.getAbsolutePath() +
"\n Can read: " + f.canRead() +
"\n Can write: " + f.canWrite() +
"\n getName: " + f.getName() +
"\n getParent: " + f.getParent() +
"\n getPath: " + f.getPath() +
"\n length: " + f.length() +
"\n lastModified: " + f.lastModified());
if(f.isFile())
System.out.println("It's a file");
else if(f.isDirectory())
System.out.println("It's a directory");
}
public static void main(String[] args) {
if(args.length < 1) usage();
if(args[0].equals("-r")) {
if(args.length != 3) usage();
File
old = new File(args[1]),
rname = new File(args[2]);
old.renameTo(rname);
fileData(old);
fileData(rname);
return; // Exit main
}
int count = 0;
boolean del = false;
if(args[0].equals("-d")) {
count++;
del = true;
}
count--;
while(++count < args.length) {
File f = new File(args[count]);
if(f.exists()) {
System.out.println(f + " exists");
if(del) {
System.out.println("deleting..." + f);
f.delete();
}
}
else { // Doesn't exist
if(!del) {
f.mkdirs();
System.out.println("created " + f);
}
}
fileData(f);
}
if(args.length == 1 &&
args[0].equals("MakeDirectoriesTest"))
monitor.expect(new String[] {
"%% (MakeDirectoriesTest exists"+
"|created MakeDirectoriesTest)",
"%% Absolute path: "
+ "\\S+MakeDirectoriesTest",
"%% Can read: (true|false)",
"%% Can write: (true|false)",
" getName: MakeDirectoriesTest",
" getParent: null",
" getPath: MakeDirectoriesTest",
"%% length: \\d+",
"%% lastModified: \\d+",
"It's a directory"
});
}
} ///:~
我们可以看到在 fileDate()中,用到了多种不同的文件特征查询方法来显示文件或目录
路径的信息。
main()方法首先调用的是 renameTo(),用来重命名(或移动)一个文件到由参数所
指示的另一个完全不同的路径(也就是另一文件对象)下面。这同样适用于任意长度的文件
目录。
实践上面的程序,我们会发现,我们可以产生任意复杂的目录路径,因为 mkdirs()可以
整个目录路径。我们还可以查看文件的特性(如:大小,最后修改日期,读/写),来检查
某个文件对象代表的是一个文件还是一个目录,并可以删除这个文件。下面这段程序展示了
文件类的一些其他方法(请参考 java.sun.com 上 HTML 文档,获得全套说明)。
//: c12:MakeDirectories.java
// Demonstrates the use of the File class to
// create directories and manipulate files.
// {Args: MakeDirectoriesTest}
import com.bruceeckel.simpletest.*;
import java.io.*;
public class MakeDirectories {
private static Test monitor = new Test();
private static void usage() {
System.err.println(
"Usage:MakeDirectories path1 ...\n" +
"Creates each path\n" +
"Usage:MakeDirectories -d path1 ...\n" +
"Deletes each path\n" +
"Usage:MakeDirectories -r path1 path2\n" +
"Renames from path1 to path2");
System.exit(1);
}
private static void fileData(File f) {
System.out.println(
"Absolute path: " + f.getAbsolutePath() +
"\n Can read: " + f.canRead() +
"\n Can write: " + f.canWrite() +
"\n getName: " + f.getName() +
"\n getParent: " + f.getParent() +
"\n getPath: " + f.getPath() +
"\n length: " + f.length() +
"\n lastModified: " + f.lastModified());
if(f.isFile())
System.out.println("It's a file");
else if(f.isDirectory())
System.out.println("It's a directory");
}
public static void main(String[] args) {
if(args.length < 1) usage();
if(args[0].equals("-r")) {
if(args.length != 3) usage();
File
old = new File(args[1]),
rname = new File(args[2]);
old.renameTo(rname);
fileData(old);
fileData(rname);
return; // Exit main
}
int count = 0;
boolean del = false;
if(args[0].equals("-d")) {
count++;
del = true;
}
count--;
while(++count < args.length) {
File f = new File(args[count]);
if(f.exists()) {
System.out.println(f + " exists");
if(del) {
System.out.println("deleting..." + f);
f.delete();
}
}
else { // Doesn't exist
if(!del) {
f.mkdirs();
System.out.println("created " + f);
}
}
fileData(f);
}
if(args.length == 1 &&
args[0].equals("MakeDirectoriesTest"))
monitor.expect(new String[] {
"%% (MakeDirectoriesTest exists"+
"|created MakeDirectoriesTest)",
"%% Absolute path: "
+ "\\S+MakeDirectoriesTest",
"%% Can read: (true|false)",
"%% Can write: (true|false)",
" getName: MakeDirectoriesTest",
" getParent: null",
" getPath: MakeDirectoriesTest",
"%% length: \\d+",
"%% lastModified: \\d+",
"It's a directory"
});
}
} ///:~
我们可以看到在 fileDate()中,用到了多种不同的文件特征查询方法来显示文件或目录
路径的信息。
main()方法首先调用的是 renameTo(),用来重命名(或移动)一个文件到由参数所
指示的另一个完全不同的路径(也就是另一文件对象)下面。这同样适用于任意长度的文件
目录。
实践上面的程序,我们会发现,我们可以产生任意复杂的目录路径,因为 mkdirs()可以
为我们做好这一切。