此题综合
/*
* 1.此题要求用数组和IO流完成
【1】要求打印java安装目录下jdk文件夹中(如:C:\Program Files\Java\jdk1.7.0_13),所有的文件名称长度小于等于6的并且扩展名为exe的文件名称(如: javac.exe)
【2】统计以上文件的个数并创建一个字符串数组,将所有的文件名称保存到数组中。
【3】将数组中的文件按照自然顺序排序,并打印排序后的结果
【4】键盘输入一个文件名(如:javac.exe)判断数组中是否存在该文件,如果存在打印该文件在数组中的索引位置,如果不存在则打印数组中不存在该文件。
【5】将数组中所有排好序的文件名通过流写入到c盘根目录下名称为:array.txt的文件中,要求换行写入每个文件名
*/
public class kaoshi01 {
static int n=0;
static int x=0;
static List<String> list=new ArrayList<String>();
public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(System.in);
int count=0;
File fi=new File("C:/Program Files/Java/jdk1.8.0_91");
bianli(fi);
System.out.println(list.size());
String[] s=new String[list.size()];
Iterator<String> it1=list.iterator();
System.out.print("数组为:");
while(it1.hasNext()){
s[count]=it1.next();
System.out.print(s[count]+" ");
count++;
}
System.out.println();
System.out.print("排序后:");
for(int i=0;i<s.length;i++){
System.out.print(s[i]+" ");
}
System.out.println();
System.out.println("输入要查找的文件:");
String cs=sc.next();
for (int i = 0; i < s.length; i++) {
if(s[i].equals(cs)){
System.out.println("索引位置为:");
System.out.println(i);
}
//内容的写入
FileWriter fw=new FileWriter("f:/array.txt");
for (int j = 0; j < s.length; j++) {
fw.write(s[j]);
fw.flush();
}
}
System.out.println("文件写入成功");
}
public static void bianli(File file){
//递归调用,变量文件夹中的所有内容
if(file.isDirectory()){
File[] f1=file.listFiles();
for (int i = 0; i < f1.length; i++) {
if(f1[i].isDirectory()){
bianli(f1[i]);
}else {
if(f1[i].getName().length()<=10&&f1[i].getName().endsWith(".exe")){
System.out.print("文件名称:");
System.out.println(f1[i].getName());
//把内容全部存进集合,无法直接存到数组
list.add(f1[i].getName());
}
}
}
}
}
}