最近笔试,碰见蛮多文件操作的题目,也没有好好记API,乱写一通。遂整理一下。
遍历文件目录,获取所有文件(包括子目录下的),然后依次读取文件中的内容,并打印出来。
public static void readFile(String path)throws IOException{
File file = new File(path);
ArrayList<File> files = new ArrayList<File>();
getFiles(file, files);
// System.out.println(files);
for(File f: files){
BufferedReader rb = null;
try {
rb = new BufferedReader(new FileReader(f));
while(rb.readLine() != null){
System.out.println(rb.readLine());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
rb.close();
}
}
}
public static void getFiles(File file, ArrayList<File> files){
if(file.isDirectory()){
File[] fs = file.listFiles();
for(File f: fs){
getFiles(f, files);
}
}else{
files.add(file);
}
}
统计文件中各单词的个数:
public static void calculateWords(String path) throws IOException{
BufferedReader rb = null;
try {
rb = new BufferedReader(new FileReader(new File(path)));
HashMap<String, Integer> words_num = new HashMap<String, Integer>();
String line = null;
while((line = rb.readLine()) != null){
if(line.contains(" ")){
String[] words = line.split(" ");
for(String word : words){
Integer num = words_num.get(word);
words_num.put(word, (num == null ? 1 : num+1));
}
}
}
Iterator it = words_num.keySet().iterator();
while(it.hasNext()){
String word = (String)it.next();
System.out.println(word + " : " + words_num.get(word));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
rb.close();
}
}