------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、File
File类是Java专门用来处理文件和目录的类,可以用它来表示某个文件的名字,也可以用它来表示目录里一组文件的名字,将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作
1.构造函数
//第一种创建方法,通过将给定路径名字符串转换为抽象路径名来创建一个新 File实例
File f1 = new File("E:\\workspace\\Practice\\src\\demo1.txt");
//第二种创建方法,根据 parent路径名字符串和 child路径名字符串创建一个新 File实例
File f2 = new File("E:\\workspace\\Practice\\src","demo2.txt");
//第三种创建方法,根据 parent抽象路径名和 child 路径名字符串创建一个新 File实例
File f = new File("E:\\workspace\\Practice\\src");
File f3 = new File(f,"demo3.txt");
2.常用方法
1)创建
boolean createNewFile():在指定位置创建文件,如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false
boolean mkdir():创建此抽象路径名指定的目录。当且仅当已创建目录时,返回 true;否则返回 false
boolean mkdirs():创建多级目录。注意,此操作失败时也可能已经成功地创建了一部分必需的目录。
2)删除
boolean delete():删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。当且仅当成功删除文件或目录时,返回 true;否则返回 false
void deleteOnExit():在虚拟机终止时,删除此抽象路径名表示的文件或目录。
3)判断
boolean exists():判断文件是否存在.
boolean isFile():判断是否为一个文件
boolean isDirectory():判断是否为一个目录
boolean isHidden():判断指定文件是否是一个隐藏文件
boolean isAbsolute():判断指定路径名是否为绝对路径
4)获取信息
String getName():返回由此抽象路径名表示的文件或目录的名称
String getPath():将此抽象路径名转换为一个路径名字符串
String getParent():返回此抽象路径名父目录的路径名字符串
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间
long length():返回由此抽象路径名表示的文件的长度
String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录
File[] listFiles():返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
//创建File对象
File f = new File("./src/demo.txt");
//创建文件
f.createNewFile();
//判断信息
System.out.println("该文件是否存在:"+f.exists());
System.out.println("是否为一个文件:"+f.isFile());
System.out.println("是否为目录:"+f.isDirectory());
System.out.println("是否是隐藏文件:"+f.isHidden());
System.out.println("是否为绝对路径:"+f.isHidden());
//获取信息
System.out.println("文件名称:"+f.getName());
System.out.println("文件路径:"+f.getPath());
System.out.println("父目录名称:"+f.getParent());
System.out.println("绝对路径:"+f.getAbsolutePath());
System.out.println("文件最后一次修改时间:"+f.lastModified());
System.out.println("文件长度:"+f.length());
}
}
3.递归
函数自身直接或者间接的调用到了自身。一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关,这时可以用递归来解决问题。
注意事项:
1)递归一定明确条件,否则容易死循环
2)注意递归的次数,尽量避免内存溢出
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
//创建File对象,指定目录
File file = new File("."+File.separator+"src");
showDir(file);
}
//获取目录下的所有文件名,因为目录中还有目录,还可以使用该功能,所以使用递归
public static void showDir(File f)
{
System.out.println(f.getName());
File[] files = f.listFiles();
for(File file : files)
{
if(file.isDirectory())
showDir(file);
else
{
System.out.println(file.getName());
}
}
}
}
二、Properties
Properties是hashtable的子类,该集合中的键和值都是字符串类型,用于操作以键值对形式存在的配置文件。集合中的数据可以保存到流中,或者从流中获取,是集合中和IO技术相结合的集合容器
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class PropertiesDemo{
public static void main(String[] args) throws IOException {
//定义Properties集合
Properties prop = new Properties();
//在集合中添加不同的元素
prop.setProperty("zhangsan01", "10");
prop.setProperty("zhangsan02", "10");
prop.setProperty("zhangsan03", "10");
prop.setProperty("zhangsan01", "12");
prop.setProperty("zhangsan01", "11");
//创建输出流对象,指向一个文件,将集合中元素存储到该文件中
FileOutputStream fos = new FileOutputStream("demo.txt");
prop.store(fos, "");
fos.close();
//创建输入流,指向一个文件,将文件中存储的集合键值对打印到控制台上
BufferedReader br = new BufferedReader(new FileReader("demo.txt"));
prop.load(br);
String str = null ;
while((str = br.readLine())!= null)
{
String[] strs = str.split("=");
prop.setProperty(strs[0], strs[1]);
}
br.close();
System.out.println(prop);
}
}