import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser;
public class Test {
public static void main(String[] args) throws IOException {
File file = null;
File upperCaseFile = null;
File lowerCaseFile = null;
JFileChooser chooser = new JFileChooser();
if(chooser.showDialog(null, "請選擇要分析的文件") == JFileChooser.APPROVE_OPTION){
file = chooser.getSelectedFile();
}else{
System.exit(0);
}
int uppercaseCount = 0, lowerCaseCount = 0;
int specialCractCount = 0;
int digitsCount = 0;
boolean writeUppcase = true;//控制要不要寫大寫文件,true寫,false不寫
boolean writeLowercase = true;//控制要不要寫小寫文件,true寫,false不寫
String upperCaseFileName = "upper.txt";//大寫字母文件
String lowerCaseFileName = "lower.txt";//小寫字母文件
//根據indicator建立必要的文件
lowerCaseFile = createNecessaryTargetFile(writeLowercase, lowerCaseFileName);
upperCaseFile = createNecessaryTargetFile(writeUppcase, upperCaseFileName);
String content = null;
BufferedReader bf = new BufferedReader(new FileReader(file));
BufferedWriter bwUpper = null, bwLower = null;
if(writeUppcase){
bwUpper = new BufferedWriter(new FileWriter(upperCaseFile));
}
if(writeUppcase){
bwLower = new BufferedWriter(new FileWriter(lowerCaseFile));
}
while((content = bf.readLine()) != null){
int length = content.length();
//統計大寫字母
uppercaseCount += length - content.replaceAll("[A-Z]", "").length();
//小寫字母個數
lowerCaseCount += length - content.replaceAll("[a-z]", "").length();
//特殊字符,除掉大小寫字母和數字的
specialCractCount += length - content.replaceAll("[^a-zA-Z0-9]", "").length();
//純數字個數
digitsCount += length - content.replaceAll("[0-9]", "").length();
if(writeUppcase){//寫大寫文件
bwUpper.write(content.toUpperCase());
bwUpper.newLine();
bwUpper.flush();
}
if(writeLowercase){//小寫文件
bwLower.write(content.toLowerCase());
bwLower.newLine();
bwLower.flush();
}
}
System.out.println("壹***有大寫字母: " + uppercaseCount);
System.out.println("壹***有小寫字母: " + lowerCaseCount);
System.out.println("特殊字符: " + specialCractCount);
System.out.println("純數字: " + digitsCount);
}
private static File createNecessaryTargetFile(boolean writeIndicator, String fileName) throws IOException {
if(writeIndicator){
File file = new File(fileName);
if(!file.exists()){
file.createNewFile();
}
return file;
}
return null;
}
}