1、SystemI\O练习:
1)通过键盘输入若干字符,并通过显示器输出;
2)定义一个静态方法validOrNot()用于对输入的字符进行合法性校验,若包含非英文字符,则抛出IllegalStringException异常;
3)通过Try/Catch异常处理机制,处理异常:若包含非英文字符,给予相应提示;若只包含英文字符,则统计字符数量,并输出。 1 package iooutput; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class IOtest {
//因为validOrNot是静态方法 所以异常类也应该是静态的 否则在方法中无法抛出该异常
public static class IllegalCharException extends Exception{ public IllegalCharException(String str){
System.out.println(str);
}
}
//throws/throw的区别 :方法外抛异常用s (很多异常)内务s表特定异常
public static void validOrNot(String str) throws Exception{
int count=0;
for(int i=0;i<str.length();i++)
{
char t=str.charAt(i); //类比于c++中字符串下标
if(t>='a'&&t<='z'||t>='A'&&t<='Z')
{
count++;
continue;
}
else throw new IllegalCharException("不是字母!"); //注意new 实例化异常类的对象
}
System.out.println(count);
} public static void main(String[] args){
BufferedReader br;
String str=null;
System.out.println("please enter string");
br=new BufferedReader(new InputStreamReader (System.in));//键盘输入
try {
while(!(str=br.readLine()).equals("end"))//一行一行读取
{
IOtest.validOrNot(str);
} } catch (IOException e) { //IO异常 一定要抛 注意
e.printStackTrace();
} catch (Exception e) { }
}
}

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

 package iooutput;

 import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class filetest { public static void main(String[] args){
try {
//文件路径必须为/不能为\
FileInputStream rf=new FileInputStream("F:/Users/verlen11/workspace/iooutput/bin/text1.txt");
FileOutputStream wf=new FileOutputStream("text2.txt");
int l=-1;
byte b[]=new byte[512];
while((l=rf.read(b,0,512))!=-1) //此处抛IO异常 //一次性读取512个字符,l表示实际读取的字符数,为-1时表示读取完毕
wf.write(b,0,l);
rf.close();
wf.close();//记得close } catch (IOException e) { //必须抛异常 IO异常包括FileNotFoundException(fileinputstream时必须抛的异常
e.printStackTrace();
} }
} //弄清字节流和字符流的区别

JAVA中IO和异常处理练习的更多相关文章

  1. java中IO流异常处理

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  2. JAVA中IO总结

    JAVA中IO流主要分为两大类: 字节流:InputStream+OutputStream 字符流:Reader+Writer 字节流: InputStream是所有字节输入流的父类 OutputSt ...

  3. Java中IO流的总结

    有关Java中IO流总结图 流分类 按方向分 输入流 输出流 按单位分 字节流 字符流 按功能分 节点流 处理流(过滤流) 其他 所有的流继承与这四类流:InputSteam.OutputStream ...

  4. Java中的try-catch-finally异常处理

    Java中的try-catch-finally异常处理 一.异常处理 异常(Exception):是在运行发生的不正常情况. 原始异常处理: if(条件) { 处理办法1 处理办法2 处理办法3 } ...

  5. java 中 IO 流分为几种?(未完成)

    java 中 IO 流分为几种?(未完成)

  6. Java中IO流,输入输出流概述与总结

    总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...

  7. JAVA中IO技术:BIO、NIO、AIO

    1.同步异步.阻塞非阻塞概念        同步和异步是针对应用程序和内核的交互而言的. 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作 ...

  8. JAVA中IO和NIO的详解分析,内容来自网络和自己总结

    用一个例子来阐释: 一辆客车上有10个乘客,他们的目的地各不相同,当没有售票员的时候,司机就需要不断的询问每一站是否有乘客需要下车,需要则停下,不需要则继续开车,这种就是阻塞的方式. 当有售票员的时候 ...

  9. JAVA中IO流总结

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42119261 我想你对JAVA的IO流有所了解,平时使用的 ...

随机推荐

  1. javascript操作JSON字符

    1.先要区分JSON字符串和JSON对象 JSON字符串: Var strJSON = “{“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}”,   或者 Var ...

  2. Linux新手笔记 源 安装chromium

    centos6.4 32 一.软件源目录/etc/yum.repos.d把新的软件源文件copy到这即可.二.安装chromiumwget http://people.centos.org/hughe ...

  3. BZOJ 1927: [Sdoi2010]星际竞速(最小费用最大流)

    拆点,费用流... ----------------------------------------------------------------------------- #include< ...

  4. lambda, reduce, map求阶乘之和

    学完这几个优雅的内建函数,就可以做一些有趣的小练习来激发兴趣了.而python最大的好处便是简洁,看下边要求 用1行代码求 1! + 2! + 3! + ... + 10! 求阶乘 reduce函数用 ...

  5. 高质量程序设计指南C/C++语言——内存管理

    • free()和delete只是把指针所指的内容给释放掉,并没有把指针本身删掉.指针被free()或delete以后其地址仍然不变(不等于NULL),只是该地址对应的内存是垃圾——p成了野指针.如果 ...

  6. MySQL DBA成长之路

    http://blog.51cto.com/zt/579 :GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'm ...

  7. C#)Windows Shell 编程系列5 - 获取图标

    原文 C#)Windows Shell 编程系列5 - 获取图标 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 编程系列4 - 上下 ...

  8. BZOJ 3038 上帝造题的七分钟2 (并查集+树状数组)

    题解:同 BZOJ 3211 花神游历各国,需要注意的是需要开long long,还有左右节点需要注意一下. #include <cstdio> #include <cmath> ...

  9. Jsp、Servlet

    1 forward.redirect forward 转发是服务器行为,浏览器根本不知道服务器发送的内容是从哪儿来,所以它的地址栏中还是原来的地址. redirect 重定向是客户端行为.redire ...

  10. 在Android Studio中使用Gradle方便地修改包名

    情景: 主Module引用了多个module,在代码使用R.xx.xx的时候,会import 当前包名.R.而由于需要上架Play做测试,可是目前的包名已经被使用了,所以需要修改包名. 正确使用bui ...