File类,用来将文件或者文件夹封装成对象,方便于流的操作。
package io;
import java.io.File;
import java.io.IOException;
/*
* File类常见方法
* 1.创建
* boolean createNewFile(); 在指定位置创建文件,如果该文件已经存在,则不创建,返回false
* 和输出流不一样,输出流对象一建立就创建文件。而且文件如果已经存在,会被覆盖。
* boolean mkdir();创建文件夹
* boolean mkdirs();创建多级文件夹
*
* 2.删除
* boolean delete();删除失败返回false。如果文件正在被使用,则删除不了,也返回false。
* void deleteOnExit();在程序退出后删除指定文件。
*
* 3.判断
* boolean exists();文件是否存在
* boolean isFile();是否是文件
* boolean isDirectory();是否是文件夹
* boolean isHidden();是否隐藏
* boolean isAbsolute();是否是绝对路径
*
* 4.获取信息
* String getName();获取文件名
* String getPath();获取文件路径(相对路径)
* String getParent();获取文件所在目录,若File封装的只有文件名,则返回null
*
* String getAbsolutePath()获取文件绝对路径
* lastModified();获取文件最后一次修改时间
* long length();获取文件大小
* String[] list();获取指定文件夹下的所有文件和文件夹名称列表
* File[] listFiles();获取指定文件夹下的所有文件和文件夹名称列表
* File[] File.listRoots();获取所有磁盘名称列表
*/
public class FileDemo {
public static void main(String[] args) {
// createFile();
// delete();
// isExists("E:" + File.separator + "BaiduYunDownload" + File.separator
// + "file1.txt");
getsMethod();
// listDemo();
}
//获取目录下所有文件和文件夹
private static void listDemo(){
File f = new File("E:"+File.separator+"BaiduYunDownload");
String[] names = f.list();
System.out.println(f);
for(String name : names){
System.out.println(name);
}
}
//获取信息方法
private static void getsMethod(){
File f = new File("file1.txt");
System.out.println("Path:"+f.getPath());//获取路径
System.out.println("AbsolutePath:"+f.getAbsolutePath());//获取绝对路径
System.out.println("Parent:"+f.getParent());//获取文件所在文件夹,如果没有返回null
}
// 封装File对象
private static void consMethod() {
// 将pathname封装成file对象。可以将已有的和未出现的文件或者文件夹封装成对象
File f = new File("E:\\test1.txt");
File f4 = new File("E:" + File.separator + "test1.txt");
// 可以封装在指定位置下的file对象
File f2 = new File("E:\\", "test2");
//File封装的对象也可以作为路径使用
File d = new File("E:\\");
File f3 = new File(d, "test3.txt");
}
//创建方法
private static void createFile() {
File f = new File("E:" + File.separator + "BaiduYunDownload"
+ File.separator + "file1.txt");
System.out.println(f);
try {
File f2 = new File("E:" + File.separator + "BaiduYunDownload"
+ File.separator + "FILE");
//创建文件夹
f2.mkdirs();
if (f.createNewFile()) {//创建文件,成功返回true,如果文件已经存在则返回false
System.out.println("文件创建成功");
} else {
System.out.println("文件已存在");
}
} catch (IOException e) {
System.out.println("创建失败");
e.printStackTrace();
}
}
//删除方法
private static void delete() {
File f = new File("E:" + File.separator + "BaiduYunDownload"
+ File.separator + "file1.txt");
System.out.println(f);
if (f.delete()) {//删除文件,删除成功返回true。若文件不存在返回false
System.out.println("删除成功");
} else {
System.out.println("文件已删除");
}
}
//判断方法
private static void isExists(String path) {
File f = new File(path);
System.out.println(f);
if (f.exists()) {//判断文件是否存在,若存在返回true
System.out.println("文件存在");
if (f.isDirectory()) {//判断是否是文件夹
System.out.println("这是一个目录");
}
if (f.isFile()) {//判断是否是文件
System.out.println("这是一个文件");
if (f.canExecute()) {//判断文件是否可执行
System.out.println("可以执行");
}
}
} else {
System.out.println("文件不存在");
}
}
}
学习了IO流,又学习了File类,下面做个练习:查找目录下中所有文件,然后将其列成清单保存在指定文件下
package io;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
/*
* 练习:查找目录下中所有文件,然后将其列成清单保存在指定文件下
*/
public class FileToListDemo {
public static void main(String[] args) {
ArrayList<File> list = new ArrayList<File>();
list = fileToList("E:"+File.separator+"BaiduYunDownload",list);
writeToFile(list,"E:"+File.separator+"BaiduYunDownload");
}
//用递归遍历指定的文件夹,将里面的文件保存在list里
private static ArrayList<File> fileToList(String dir,ArrayList<File> list){
File file = new File(dir);
File[] files = file.listFiles();
for(File f : files){
if(!f.isHidden()&&f.isDirectory()){
fileToList(f.toString(),list);
}else{
list.add(f);
}
}
return list;
}
//使用字符流输出list中保存的文件
private static void writeToFile(ArrayList<File> list,String destion){
BufferedWriter bw = null;
try{
//设置时间格式
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
String d = destion+File.separator+"文件目录"+sdf.format(date)+".log";
//设置清单保存位置
bw = new BufferedWriter(new FileWriter(d));
for(File f : list){
bw.write(f.toString());
bw.newLine();
bw.flush();
}
System.out.println(d+"文件目录已生成");
}catch(IOException e){
e.printStackTrace();
}finally{
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}