Java IO(一)
在Java中,所有的io类都放在java.io包中。
在IO操作中,我们总是会从一个源数据读取到一个目标数据。那么这个源数据和目标数据可以是文件,流等等。那最常见的就是文件,就像我们在本地电脑上写入东西一样,写入到一个文件中。在java中操作文件,就不得不提到一个File类。
File
File类在整个IO包中是一个独立的类,主要完成一些对文件的操作。表示文件和目录路径名的抽象表示形式。
此类的定义如下:
public class File extends Object implements Serializable,Comparable<File>
需要注意的是,File类的实例是不可改变的。也就是说,一旦创建,File对象表示的抽象路径名将永不改变。
该类中的字段:
1, | static String | pathSeparator | 表示与系统有关的路径分隔符,表示为一个字符串 |
2, | static char | pathSeparatorChar | 表示与系统有关的路径分隔符 |
3, | static String | separator | 表示与系统有关的额默认名称分隔符,表示为一个字符串 |
4 | static char | separatorChar | 表示与系统有关的默认名称分隔符 |
下面我们通过一个实例来看看这些字段究竟是什么:
package com.fuwh.file; import java.io.File; public class FileTest01 { public static void main(String[] args) { System.out.println("pathSeparator:"+File.pathSeparator); System.out.println("pathSeparatorChar:"+File.pathSeparatorChar); System.out.println("separator:"+File.separator); System.out.println("separatorChar:"+File.separatorChar); } }
实际上,这些字符都是根据本地系统来取得的。比如说:separator在windows系统下为‘\’,但是在UNIX系统则为'/'。
因此,在实际的开发中我们建议使用File.separator的形式,因为这样可以提高代码的可移植性。
我们在来看看此类的构造方法:
File(File parent,String child) | 根据parent抽象路径名和child路径名称字符串创建一个新File实例 |
File(String pathname) | 通过将给定路径名字符串转换为抽象路径名来创建一个新File实例 |
File(String parent,String child) | 根据parent路径名称字符串和child路径名称字符串创建一个新File实例 |
File(URI uri) | 通过将给定的file:URI转换为一个抽象路径名来创建一个新的File实例 |
主要方法:
1. | boolean createNewFile() | 当且仅当不存在具有此抽象路径名指定的文件时,创建一个新的空文件 |
2. | boolean delete() | 删除此抽象路径名表示的文件或目录 |
3. | boolean exists() | 测试此抽象路径名表示的文件或目录是否存在 |
4. | File getAbsoluteFile() | 返回此抽象路径名的绝对路径名形式 |
5. | String getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串 |
6. | String getName() | 返回此抽象路径名表示的文件或目录的名称 |
7. | String getParent() | 返回此抽象路径名父母路的路径名字符串,如果没有父路径名则返回null |
8. | File getParentFile() | 返回此抽象路径名父母路的抽象路径名,如果没有指定父目录则返回null |
9. | String getPath() | 将此抽象路径名转换为一个路径名字符串 |
10. | boolean isFile() | 测试此抽象路径名指定的文件是否是一个标准文件 |
11. | boolean isDirectory() | 测试此抽象路径名指定的文件是否是一个目录 |
12. | boolean isHidden() | 测试此抽象路径名指定的文件是否是一个隐藏文件 |
13. | String[] list() | 返回一个字符串数组,这些字符串指向此抽象路径名表示的目录中的文件和目录 |
14. | File[] listFiles() | 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件 |
15. | boolean mkdir() | 差un关键此抽象路径名指定的目录 |
实例:
package com.fuwh.file; import java.io.File; public class FileTest02 { public static void main(String[] args) { //在当前classpath下创建文件test.txt File file=new File("test.txt"); String path=file.getAbsolutePath(); String parent=path.substring(0, path.lastIndexOf("\\")); listAllFile(parent); } static void listAllFile(String path){ File files[]=new File(path).listFiles(); System.out.println(files.length); for(int i=0;i<files.length;i++){ if(files[i].isFile()){ System.out.println(files[i]); }else{ if(files[i].isDirectory()){ listAllFile(files[i].getAbsolutePath()); } } } } }