JavaSE基础第13天练习(异常,IO流)

一、 基础案例

1. 训练案例1

1.1. 训练描述:【try…catch】
一、 需求说明:编写代码,产生ArithmeticException异常,并使用try…catch进行处理。
二、 处理方式:将异常信息输出在控制台
1.2. 操作步骤描述

  1. 编写打印语句 xx / 0 将问题产生。
  2. 使用try语句对其包裹。
  3. 在catch小括中编写对应的ArithmeticException进行捕获。
  4. 使用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. 操作步骤描述

  1. 创建FileInputStream对象关联源文件。
  2. 创建FileOutputStream对象关联目标文件。
  3. 自定义字节数组提高读写效率。
  4. 通过while循环不断地将数据读取到数组中。
  5. 在循环过程中将读取到的数据从数组中写出到目标文件。
  6. 关闭流释放资源
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. 操作步骤描述

  1. 创建HashSet集合对象用于存储读取到的每一个字符(用于去重)
  2. 创建字节输入流对象
  3. 将读取到的字符存储到集合中
  4. 创建输入流对象关联目标文件
  5. 遍历Set集合获取到每一个数据, 并调用write方法写出
  6. 关闭流释放资源
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. 操作步骤描述

  1. 键盘录入要查找的字符
  2. 创建输入流对象关联info3.txt
  3. 创建StringBuilder用于存储读取到的所有字符
  4. 将读取到的字符添加到StringBuilder当中
  5. 调用indexOf方法判断键盘录入的字符是否存在, 如果返回-1说明不存在
  6. 如果存在的话, 将StringBuilder拆分成字符数组
  7. 遍历字符数组, 获取到每一个字符
  8. 跟键盘录入的字符逐个进行匹配 (不要忘了将字符转换为字符串)
  9. 打印出现的次数
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);
		}
		
	}

}

发布了30 篇原创文章 · 获赞 10 · 访问量 877

猜你喜欢

转载自blog.csdn.net/weixin_45788152/article/details/104339846