-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathViewFile_version0.01
104 lines (91 loc) · 4.21 KB
/
ViewFile_version0.01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package fileandxml.file;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.sql.Time;
import java.util.*;
import javax.rmi.CORBA.Tie;
//目标实现一个可以传入特定类型以及传入文件路径然后打印出该目录下所有该类型文件,,实现了自己定义异常类,
//2017年11月25日20:31:36修改
//这个程序功能很差,应该实现的功能是输入输入相应的类型然后就输出该目录下该类型文件一共有多少个,就不要单独对MP4做处理了
//还有想办法从存储了该类型文件集合写进TXT文档
// 传入文件夹地址,传入要检索的文件类型,输出该文件夹下的该类型的文件,如果是视频输出视频总长度(无奈不会输出视频总时长)
public class ViewAllFile {
// 存放检索出来的所有文件
static ArrayList<File> fileList = new ArrayList<File>();
// 判断是否存在该类型文件(便于后期调用)
static boolean isExistCertainFile = false;
//主要方法:实现了查找的功能
static void findCertainTypeFiles(String directory, String type) throws MyNoSuchFileException {
File file = new File(directory);
//目录不存在就抛出异常
if (!file.exists()) {
throw new MyNoSuchFileException();
}
// 将输入的文件下所有文件(只是涉及了文件夹第一层)放到File数组里面
File[] sum = file.listFiles();
// 遍历所有file,
for (File i : sum) {
if (i.isFile()) {
if (i.getName().endsWith(type)) {
// 这是为了判断是否有该类型文件
isExistCertainFile = true;
// 存入了集合中,便于后续处理 比如输出一共有多少个文件
fileList.add(i);
}
}
// 利用了递归的思想,如果是文件夹的话就应该继续查找直到找到了文件为止
if (i.isDirectory()) {
// 因为要求传入字符串,所以利用""转换为字符串
findCertainTypeFiles("" + i.getAbsoluteFile(), type);
}
}
}
public static void main(String[] args) {
System.out.println("请输入要检索的地址");
Scanner in = new Scanner(System.in);//为什么警告应该关闭
String directory = in.next();
System.out.println("请输入要检索的文件类型");
String fileType = in.next();
// 这里可能出现文件不存在的情况,应该抛出异常
try {
findCertainTypeFiles(directory, fileType);
//从ArrayList里输出已经检索出来的文件名称
for (int i = 0; i < fileList.size(); i++) {
System.out.println(fileList.get(i));
}
// 输出没有该类型文件
if (isExistCertainFile == false) {
{
System.out.println("该目录下没有" + fileType + "文件");
}
}
System.out.println("共有" + fileType + "文件是" + fileList.size());
} catch (MyNoSuchFileException e) {
// TODO Auto-generated catch block
System.err.println(e.getMessage());
}
// 企图将ArrayList中的文件写到TXT文件中,便于保存以及后期查看
finally {
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(new File("D:\\test1\\Test.txt"));
int b = 0;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//
// 练习自己定义一个异常类
class MyNoSuchFileException extends Exception {
@Override
public String getMessage() {
// TODO Auto-generated method stub
return "地址无效傻瓜";
}
}