⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 englishfile.java

📁 文本文件的读写操作
💻 JAVA
字号:
import java.util.*;							//导入需要的包
import java.io.*;
import java.util.regex.*;
public class EnglishFile{					//定义一个类
	private String str;						//定义类属性,接收输入文件名
	public EnglishFile(){
		this.str="abc";						//无参构造方法对str初始化
		}
	public EnglishFile(String str){			//有参构造方法
		this.str=str;
		}
	public String get_str(){				//获得文件名
		return this.str;
		}
	public void set_str(String str){		//设置文件名
		this.str=str;
		}
	public void count()throws myExecption,Exception{		//定义处理文本的方法
		String xg;											//存储文件名
		Map map=new TreeMap();		//创建相联集合,键是字符串,键所对应(映射)的值为字符串数			
		String name=get_str();		//获取属性值就是文件名
		File filename=new File(name);
		if(!filename.exists()||!filename.isFile()||!filename.canRead()) //对文件进行判断
			throw new myExecption(this);			//出现异常,马上抛出让外层捕获
		else										//否则,正常处理
		{	
		 FileReader str=new FileReader(filename);				//建立文件流	
		 BufferedReader line=new BufferedReader(str);			//包装一下文件流
		 while((xg=line.readLine())!=null)						//读取输入文件中的每一行
	   	   { 
	 		//创建正则表达式匹配模式,匹配字符串(包括标点符号,单词和数字)
	 		Pattern p=Pattern.compile("[^\\w+&&[^\\s]]|\\w+|\\d+");
			Matcher matcher=p.matcher(xg);			//使用匹配类与模式相联
			//对每一行根据模式寻找相应的符号,单词或是数字进行匹配,把它们全部集合map
			while(matcher.find())			//找到(肯定能找到但要判断是否已存在于集合中)			
				{	
			 	String word=matcher.group();			//从匹配中截获匹配到的字符串
			 	Object o=map.get(word);		//获取相应键(即字符串)的对应值(即个数值)
			 	//如果没有与此字符串对应的条目(即个数),则增加一个
			 	if(o==null)					
			 		{
			 		 map.put(word,new Integer(1));
			 		}
			 	//否则,将此字符串的个数(即它对应的值)增加1
			 	else
			 		{
			 		 Integer count=(Integer)o;			//还原类型才可使用
			 		 //键(即字符串)不变,其个数增加1
			 		 map.put(word,new Integer(count.intValue()+1));	
			 		}		
				}
			//获得集合的所有键(List 是存放Object类的),并存入数组
			List keys=new ArrayList(map.keySet());
			//利用通用的迭代器获取每个一个键
			Iterator iterator=keys.iterator();
			System.out.println("某单词或标点符号-->:此单词或标点符号个数");
			while(iterator.hasNext())			//还有下一个键时
				{
				 Object key=iterator.next();	//取一个键
				 //输出键(字符串)以及键对应的值(个数)
				 System.out.println("'"+key+"'-->:"+map.get(key));	
				}	
			//创建只匹配单词的模式
			Pattern p1=Pattern.compile("[a-zA-Z]+");
			Matcher matcher1=p1.matcher(xg);
			int i=0;					//用于记录单词个数		
			while(matcher1.find())		//找到一个就增加1
				{	
			 	 i++;
				}
			System.out.println("单词总数为: "+i);	//输出单词总数
	   	   }			
		 line.close();				//关闭文件流
		 }
		}	
	}
class myExecption extends Exception{		//自定义异常类
	EnglishFile file;
	public myExecption(EnglishFile f)
		{
		 super();
		 file=f;
		}
	
	public String toString()
		{
		 //输出发生异常时的异常信息
		 return"文件"+file.toString()+"不存在或不可读又或者是目录";
		}
	}
class TestEnglishFile{				//定义测试类
	public static void main(String args[]) throws IOException{	//向外层抛出异常	
		EnglishFile file=new EnglishFile("abc");	//利用构造方法初始化
		//从标准输入(键盘)接收文件名,并为输入流做了一下包装
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		System.out.println("please input the filepath:");
		String path=br.readLine();	
		file.set_str(path);			//传送文件名
		try{						//捕获可能的异常
			file.count();			//调用方法
			}
		catch(myExecption e){
			System.out.println(e);
			}
		catch(Exception e){
			System.out.println("其他错误");
			}		
		}
	}			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -