【Java开源代码栏目提醒】:网学会员Java开源代码为您提供TextStreamtoken.java参考,解决您在TextStreamtoken.java学习中工作中的难题,参考学习。
package com.zf.s10;//创建一个包
import java.io.*;//引入类
import java.util.*;
public class TextStreamtoken {//操作Streamtoken进行字符串分割和统计
public static void separator(String fileName){//进行字符串分割
Hashtable worldList=new Hashtable();//创建哈希表
try {
FileReader fr = new FileReader(fileName);//创建读文件对象
BufferedReader br = new BufferedReader(fr);//创建读缓冲对象
StreamTokenizer st = new StreamTokenizer(br);//创建流标记
st.resetSyntax();//重置此标记生成器的语法,使所有字符都成为普通字符
st.wordChars('A', 'Z');//字符范围在'A'与'Z'之间
st.wordChars('a', 'z');//字符范围在'A'与'Z'之间
int type;
Object dummy = new Object();
//循环直到读到流尾(TT_EOF)
while ((type = st.nextToken()) != StreamTokenizer.TT_EOF) {
if (type == StreamTokenizer.TT_WORD)//是否等于已读到的一个字标记常量
worldList.put(st.sval, dummy);//st.sval是当前标记一个字
}
br.close();//关闭读缓冲对象
} catch (Exception e) {//捕获异常
System.err.println(e);
}
Enumeration e = worldList.keys();//根据键值获行枚举集合
while (e.hasMoreElements())//循环显示哈希表中的值信息
System.out.println(e.nextElement());
}
public static long statisFile(String fileName) {//统计字符数
FileReader fileReader = null;
try {
fileReader = new FileReader(fileName);
StreamTokenizer st = new StreamTokenizer(new BufferedReader(
fileReader));// 创建分析给定字符流的标记生成器
st.ordinaryChar('\'');//标记'\'字符为普通字符
st.ordinaryChar('\"');//标记'\"'字符为普通字符
st.ordinaryChar('/');//标记'/'字符为普通字符
String s;
int number = 0;
int wordSum = 0;
int symbolSum = 0;
int total = 0;
while (st.nextToken() != StreamTokenizer.TT_EOF) {//循环到读到流尾
switch (st.ttype) {//这个域包含刚被读取的标记的类型
case StreamTokenizer.TT_EOL:// TT_EOL指示已读到行末尾的常量。
break;
case StreamTokenizer.TT_NUMBER:// TT_NUMBER指示已读到一个数字标记的常量
s = String.valueOf((st.nval));//st.nval标记是一个数字
number += s.length();
break;
case StreamTokenizer.TT_WORD:// 标记为一个文字标记
s = st.sval;//st.sval标记为字符串
wordSum += s.length();
break;
default:
s = String.valueOf((char) st.ttype);//这个域包含刚被读取的标记的类型
symbolSum += s.length();
}
}
System.out.println("含有数字的个数为 " + number+"个");
System.out.println("含有中文的个数为 " + wordSum+"个");
System.out.println("含有其它字符的个数为" + symbolSum+"个");
total = symbolSum + number + wordSum;
System.out.println("文件中总共含有字符的个数" + total+"个");
return total;
} catch (Exception e) {//捕获异常
e.printStackTrace();
return -1;
} finally {//内容总执行
if (fileReader != null) {
try {
fileReader.close();//确保读文件流关闭
} catch (IOException e1) {
}
}
}
}
public static void main(String args[]) {//java程序主入口处
System.out.println("输入进行字符串分割的文件(包括路径和后缀)");
Scanner scan=new Scanner(System.in);//键盘输入
String fileName=scan.next();//获得键盘输入的值
System.out.println("1.显示分割后的文件信息:");
separator(fileName);//调用方法进行字符串分割
System.out.println("2.统计文件字符数:");
statisFile(fileName);
}
}
上一篇:
TextStaticInnerClass.java
下一篇:
房地产企业财务管理实务操作