本帖最后由 张昶 于 2013-7-15 09:53 编辑
/*
8、 把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出,例如:
a: 21 次
b: 15 次
c: 15 次
把: 7 次
当: 9 次
前: 3 次
,:30 次
*/
package com.itheima;
import java.util.ArrayList;
import java.io.*;
public class Test_08 {
public static void Copy() throws IOException {
String from = "E:/in.txt";
String to = "E:/out.txt";
FileInputStream in = null;
FileOutputStream out = null;
InputStreamReader isr = null;
//用于包装InputStreamReader,提高处理性能。因为BufferedReader有缓冲的,而InputStreamReader没有。
BufferedReader br = null;
try{
in = new FileInputStream(from);
out = new FileOutputStream(to);
int i = 0;
while((i = in.read()) != -1){
out.write(i);
}
String str = "";
String str1 = "";
in = new FileInputStream(to);
// 从文件系统中的某个文件中获取字节
isr = new InputStreamReader(in); // InputStreamReader 是字节流通向字符流的桥梁,
br = new BufferedReader(isr); // 从字符输入流中读取文件中的内容,封装了一个new InputStreamReader的对象
while ((str = br.readLine()) != null) {
//Count(str1 += str + "\n");
if(str!="\n") {
Count(str1 += str);
} else {
continue;
}
}
} catch (NullPointerException e) {
System.out.println("空指向异常!");
} catch (FileNotFoundException e) {
System.out.println("找不到指定文件");
} catch (IOException e) {
System.out.println("读取文件失败");
} finally {
// 关闭的时候最好按照先后顺序关闭最后开的先关闭所以先关s,再关n,最后关m
br.close();
isr.close();
out.close();
in.close();
}
}
public static void Count(String tempchar) {
ArrayList<Character> al = new ArrayList<Character>();
for (int i = 0; i < tempchar.length(); i++) {
al.add(i, tempchar.charAt(i));
}
while (al.size()!=0) {
int count = 1;
for (int j = 1; j < al.size() ; j++) {
if (al.get(0).equals(al.get(j))) {
al.remove(j);
count++;
}
}
System.out.println(al.get(0)+":"+count+"次");
al.remove(0);
}
}
public static void main(String[] args) throws IOException {
Test_08 test = new Test_08();
test.Copy();
}
}
我得的结果:前面有一段时重复的,求高手帮解决。
|