File类
用来将文件或目录封装成对象
方便对文件或目录信息进行处理
File对象可以作为参数传递给流进行操作
File类常用方法
创建
booleancreateNewFile():创建新文件,如果文件存在,返回false
booleanmkdir():创建目录,只能创建一级目录
booleanmkdirs():创建目录,可创建多级目录
删除
booleandelete():删除文件,如果文件不存在,返回false,如果删除的是目录,需要确保目录是空的
voiddeleteOnExit():程序结束时删除文件
判断
booleanexists():判断文件是否存在
booleanisFile():判断是否是一个文件
booleanisDirectory():判断是否是目录
booleanisHidden():判断文件是否隐藏
booleanisAbsolute():判断是否是绝对路径
booleancanExecute():判断文件可否执行
booleancanRead():判断文件是否可读
booleancanWrite():判断文件是否可写
获取信息
FilegetAbsoluteFile():获取绝对路径文件对象
StringgetAbsolutePath():获取绝对路径
longlastModified():获取最后修改时间
longlength():获取大小
static File[]listRoots():静态方法,获取系统可用根目录
String[]list(FilenameFilter filter):过滤文件名并获取
File类简单应用
打印.java文件
1: 2: //打印指定目录中的.java文件
3: private static void fileFilter()
4: {5: File f = new File("d:\code\java_blog_code");
6: 7: //FilenameFilter用来设置过滤器
8: String[] s = f.list(new FilenameFilter()
9: {10: public boolean accept(File dir,String name)
11: {12: if(name.endsWith(".java"))
13: return true;
14: else
15: return false;
16: } 17: }); 18: 19: for(String ss : s)
20: { 21: System.out.println(ss); 22: } 23: }打印层级目录文件
1: //根据层级打印制表符
2: private static void printLevel(int level)
3: {4: for(int i = 0 ; i < level ; i ++)
5: {6: System.out.print(" ");
7: } 8: } 9: 10: //利用递归,分层次打印指定目录的文件
11: private static void showFiles(File dir,int level)
12: {13: //打印目录名
14: printLevel(level); 15: System.out.println(dir.getName()); 16: 17: File[] files = dir.listFiles(); 18: 19: for(File f : files)
20: {21: if(f.isDirectory())
22: //如果是目录,传入方法进行递归
23: showFiles(f,level+1);24: else
25: {26: //打印文件列表
27: printLevel(level+1); 28: System.out.println(f.getName()); 29: } 30: } 31: }Properties类
文件配置信息专用类,Hashtable的子类,内部存放一些文件属性的键值对信息,如果较复杂信息可使用xml存储,简单键值对使用Properties存取
Properties常用方法
StringgetProperty(String key):通过key获取value信息
voidload(InputStream inStream):从字节流加载键值对信息
voidload(Reader reader):从字符流加载键值对信息
ObjectsetProperty(String key, String value):设置键值对信息
voidstore(OutputStream out, String comments):将键值对信息导入到字节流
voidstore(Writer writer, String comments):对键值对信息导入到字符流
Properties简单应用
模拟限制程序运行次数
1: import java.io.*;
2: import java.util.*;
3: 4: /*
5: 模拟限制程序运行次数
6: */
7: class PropertiesDemo
8: {9: public static void main(String[] args) throws IOException
10: { 11: 12: Properties prop = new Properties();
13: 14: //导入info.txt的字节流信息
15: prop.load(new FileInputStream("info.txt"));
16: 17: //获取程序运行次数
18: String times = prop.getProperty("times");
19: 20: //如果第一次运行,则设置次数为1
21: if(times == null)
22: prop.setProperty("times","1");
23: //如果次数大于5次,则打印缴费信息,退出程序
24: else if(times.compareTo("4") > 0)
25: {26: System.out.println("times greater than 5!please donate money!");
27: System.exit(0); 28: }29: //程序在允许运行次数范围内,获取次数,并加1
30: else
31: {32: prop.setProperty("times",""+(Integer.parseInt(times)+1));
33: } 34: 35: //将设置的新次数写入到info文件中
36: prop.store(new FileOutputStream("info.txt"),"times");
37: 38: //程序主题,可无视
39: for(int i = 0 ; i < 10 ; i ++)
40: {41: System.out.println("i = "+i);
42: } 43: 44: 45: } 46: 47: 48: }