java核心技术之IO流(一)File类

最后更新于:2022-04-01 09:58:39

### File类的说明 File类是java.io包中对应着硬盘中的一个文件或网络中的一个资源,可以表示一个文件(.doc .xls .mp3 .avi .jpg .dat等类型),也可以表示一个文件目录。 File类的对象是与平台无关的,File类针对文件或文件目录,只能进行新建,删除,重命名,上层目录等操作,如果涉及到访问文件的内容,File是无能为力,只能使用IO流来实现。我们常把File类的对象做为形参传递给相应的IO流的构造方法中。 ### 关键方法 构造方法: ~~~ File(String path) 使用文件路径名path创建一个File对象 File(URI uri) 使用一个文件的uri创建一个File对象 File(File dir, String name) 使用一父文件dir和文件名name创建一个File对象 File(String dirPath, String name) 使用父文件名dirPath和文件名name创建一个File对象 ~~~ 常用方法 | 方法名 | 说明 | |-----|-----| | getName() | 获取文件名 | | getAbsolutePath() | 获取文件绝对路径 | | getParent() | 获取文件的父路径名 | | lastModified() | 获取最后修改时间 | | length() | 获取文件大小 | | canRead() | 获取文件是否可读 | | canWrite() | 获取文件是否可写 | | mkdir() | 创建文件夹 | | exists() | 文件是否存在 | | createNewFile() | 创建一个新文件 | 关键变量: separator 文件路径的分割符(“\”),这个变量可以更好的支持跨平台的文件名表示 ### File的Demo代码 这个Demo有三个方法: BaseInfo()—–显示文件的基本信息,如名字,大小,路径,修改时间等等。 showFiles(File file)—–显示文件目录下的文件名(不包括子目录下的文件) showAllFiles(File file)—–显示文件目录下的文件名(包括子目录下的文件) ~~~ import java.io.File; import java.io.IOException; import java.util.Date; public class FileDemo { //文件的基本信息 public static void BaseInfo(){ System.out.println("BaseInfo()"); File file = new File("test.txt"); if(!file.exists()){ try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("file.getName(): "+file.getName()); //C:\Documents and Settings\All Users\workspace\IODemo\test.txt System.out.println("file.getAbsolutePath(): "+file.getAbsolutePath()); System.out.println("file.getParent(): "+file.getParent()); System.out.println("new Date(file.lastModified()): "+ new Date(file.lastModified())); System.out.println("file.length(): "+ file.length()); System.out.println("file.canRead(): "+ file.canRead()); System.out.println("file.canWrite(): "+ file.canWrite()); System.out.println("file.pathSeparator "+file.pathSeparator);//; System.out.println("file.separator "+file.separator);//file.separator---路径分割符(\) File file2 = new File("Demo1"); file2.mkdir(); } //显示文件目录下的文件名(不包括子目录下的文件) public static void showFiles(File file){ System.out.println("\nshowFiles: "+file.getName()); String[] strs = file.list(); for (int i = 0; i < strs.length; i++) { System.out.println("文件"+i+"的名称:"+strs[i]); } } //显示文件目录下的文件名(包括子目录下的文件) public static void showAllFiles(File file){ System.out.print(file.getName()+"/"); File[] f1 = file.listFiles(); if(f1 != null && f1.length > 0){ for (int i = 0; i < f1.length; i++) { //System.out.println("文件"+i+"名字: "+f1[i].getName()); if(f1[i] != null){ if(f1[i].isDirectory()){ if(f1[i] != null){ System.out.print("/"); showAllFiles(f1[i]); } }else{ if(i == 0){ System.out.println(" "); } System.out.println("文件"+i+"名字: "+f1[i].getName()); } } } } } } ~~~ 调用: ~~~ //1.File的一个基本信息 FileDemo.BaseInfo(); //2.显示文件目录下的文件名(不包括子目录下的文件) File f1 = new File("C:\\Documents and Settings"); FileDemo.showFiles(f1); //3.显示文件目录下的文件名(包括子目录下的文件) FileDemo.showAllFiles(f1); ~~~ 输出信息: ~~~ BaseInfo() file.getName(): test.txt file.getAbsolutePath(): C:\Documents and Settings\All Users\workspace\IODemo\test.txt file.getParent(): null new Date(file.lastModified()): Thu Oct 15 20:05:48 CST 2015 file.length(): 0 file.canRead(): true file.canWrite(): true file.pathSeparator ; file.separator \ showFiles: Documents and Settings 文件0的名称:All Users 文件1的名称:Default User 文件2的名称:LocalService 文件3的名称:NetworkService 文件4的名称:user.com ................. ~~~ 参考资料: 1.File api文档 [http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4](http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4) 2.java io视频 [http://edu.csdn.net/course/detail/805/10961?auto_start=1](http://edu.csdn.net/course/detail/805/10961?auto_start=1)
';