JAVA中IO和异常处理练习

1、SystemIO练习:
1)通过键盘输入若干字符,并通过显示器输出;
2)定义一个静态方法validOrNot()用于对输入的字符进行合法性校验,若包含非英文字符,则抛出IllegalStringException异常;
3)通过Try/Catch异常处理机制,处理异常:若包含非英文字符,给予相应提示;若只包含英文字符,则统计字符数量,并输出。

1
package iooutput; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 7 public class IOtest { 8 //因为validOrNot是静态方法 所以异常类也应该是静态的 否则在方法中无法抛出该异常 9 public static class IllegalCharException extends Exception{ 10 11 public IllegalCharException(String str){ 12 System.out.println(str); 13 } 14 } 15 //throws/throw的区别 :方法外抛异常用s (很多异常)内务s表特定异常 16 public static void validOrNot(String str) throws Exception{ 17 int count=0; 18 for(int i=0;i<str.length();i++) 19 { 20 char t=str.charAt(i); //类比于c++中字符串下标 21 if(t>='a'&&t<='z'||t>='A'&&t<='Z') 22 { 23 count++; 24 continue; 25 } 26 else throw new IllegalCharException("不是字母!"); //注意new 实例化异常类的对象 27 } 28 System.out.println(count); 29 } 30 31 public static void main(String[] args){ 32 BufferedReader br; 33 String str=null; 34 System.out.println("please enter string"); 35 br=new BufferedReader(new InputStreamReader (System.in));//键盘输入 36 try { 37 while(!(str=br.readLine()).equals("end"))//一行一行读取 38 { 39 IOtest.validOrNot(str); 40 } 41 42 } catch (IOException e) { //IO异常 一定要抛 注意 43 e.printStackTrace(); 44 } catch (Exception e) { 45 46 } 47 } 48 }

 2、文件读写练习
1)从文本文件(text1.txt)中读取数据,将数据复制到另一文本文件(text2.txt) 中;
2)源文件text1.txt中可能包含中文字符、英文字符以及数字符号等多种字符,请选择适合的流完成文件读写操作;
3)在进行文件复制时,去掉源文件(text1.txt)中的非英文字符。

 1 package iooutput;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public class filetest {
 9     
10     public static void main(String[] args){
11         try {
12             //文件路径必须为/不能为
13             FileInputStream rf=new FileInputStream("F:/Users/verlen11/workspace/iooutput/bin/text1.txt");
14             FileOutputStream wf=new FileOutputStream("text2.txt");
15             int l=-1;
16             byte b[]=new byte[512];
17             while((l=rf.read(b,0,512))!=-1)    //此处抛IO异常   //一次性读取512个字符,l表示实际读取的字符数,为-1时表示读取完毕
18                 wf.write(b,0,l);
19             rf.close();
20             wf.close();//记得close
21             
22         } catch (IOException e) {    //必须抛异常  IO异常包括FileNotFoundException(fileinputstream时必须抛的异常
23             e.printStackTrace();
24         }
25         
26     }
27 }
28 
29 //弄清字节流和字符流的区别
原文地址:https://www.cnblogs.com/verlen11/p/4152186.html