一、 基础案例
1. 训练案例1
1.1. 训练描述:【try…catch】
一、 需求说明:编写代码,产生ArithmeticException异常,并使用try…catch进行处理。
二、 处理方式:将异常信息输出在控制台
1.2. 操作步骤描述
- 编写打印语句 xx / 0 将问题产生。
- 使用try语句对其包裹。
- 在catch小括中编写对应的ArithmeticException进行捕获。
- 使用printStackTrace方法将异常信息输出在控制台。
public class Test01 {
public static void main(String[] args) {
System.out.println("程序开始:");
int a = 10;
int b = 0;
try{
int c = 10/0;
System.out.println(c);
}
catch (ArithmeticException e ){
e.printStackTrace();
}
System.out.println("程序结束!");
}
}
/*程序开始:
程序结束!
java.lang.ArithmeticException: / by zero
at day13.test.Test01.main(Test01.java:10)*/
2. 训练案例2
2.1. 训练描述:【FileInputStream、FileOutputStream】
一、需求说明:拷问文本文件
2.2. 操作步骤描述
- 创建FileInputStream对象关联源文件。
- 创建FileOutputStream对象关联目标文件。
- 自定义字节数组提高读写效率。
- 通过while循环不断地将数据读取到数组中。
- 在循环过程中将读取到的数据从数组中写出到目标文件。
- 关闭流释放资源
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test02 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\\java\\a.txt");
FileOutputStream fos = new FileOutputStream("D:\\java\\d.txt");
int d;
while((d=fis.read())!=-1){
fos.write(d);
}
fis.close();
fos.close();
}
}
数组读写:
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\\java\\a.txt");
FileOutputStream fos = new FileOutputStream("D:\\java\\b.txt");
byte[] b =new byte[1024];
int a;
while((a=fis.read(b))!=-1){
fos.write(b,0,a);
}
fis.close();
fos.close();
}
}
二、 扩展案例
1. 训练案例1
1.1. 训练描述:
一、 分析以下需求,并用代码实现:
需求: 读取当前项目下的info1.txt
文件内容如下 : aaaaaaaaaaabbbbbbbbbbbbccdefg
要求将数据去重后写回
最终效果 : fgdebca
1.2. 操作步骤描述
- 创建HashSet集合对象用于存储读取到的每一个字符(用于去重)
- 创建字节输入流对象
- 将读取到的字符存储到集合中
- 创建输入流对象关联目标文件
- 遍历Set集合获取到每一个数据, 并调用write方法写出
- 关闭流释放资源
public class Test03 {
public static void main(String[] args) throws IOException {
Set<Character> hs = new HashSet<>();
FileInputStream fis = new FileInputStream("D:\\java\\a.txt");
int len;
while ((len = fis.read()) != -1) {
hs.add((char) len);
}
FileOutputStream fos = new FileOutputStream("D:\\java\\b.txt");
for (Character a : hs) {
fos.write(a);
}
fis.close();
fos.close();
}
}
2. 训练案例2
2.1. 训练描述:
一、 分析以下需求,并用代码实现
需求 : 键盘录入一个字符(以字符串的形式录入)
判断当前字符在info3.txt当中是否存在
如果不存在, 给出提示
如果存在, 请统计出该字符出现的次数
Info3.txt内容如下:
abcdefghijklmnopqrstuvwxyz,mnopqrstuvwxyz,mnopqrstuvwxyz,mnopqrstuvwxyz
2.2. 操作步骤描述
- 键盘录入要查找的字符
- 创建输入流对象关联info3.txt
- 创建StringBuilder用于存储读取到的所有字符
- 将读取到的字符添加到StringBuilder当中
- 调用indexOf方法判断键盘录入的字符是否存在, 如果返回-1说明不存在
- 如果存在的话, 将StringBuilder拆分成字符数组
- 遍历字符数组, 获取到每一个字符
- 跟键盘录入的字符逐个进行匹配 (不要忘了将字符转换为字符串)
- 打印出现的次数
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Tz03 {
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
System.out.println("请输入您要查找的字符");
String s = input.next();
FileInputStream fis = new FileInputStream("D:\\java\\info3.txt");
StringBuilder sb = new StringBuilder();
int b;
while((b = fis.read()) != -1){
sb.append((char)b);
}
if(sb.indexOf(s) == -1){
System.out.println("抱歉没有找到");
}else{
int sum =0;
char[] c = sb.toString().toCharArray();
for(char ch :c){
if(s.equals(ch +"")){
sum++;
}
}
System.out.println("出现次数:"+sum);
}
}
}