3.17学习内容:I/O框架 :流、 File 类

课堂案例

package day32.t1;

import java.io.UnsupportedEncodingException;

public class TestEncoding {

public static void main(String[] args) throws Exception {
	
	String str = new String("你好世界123abc");
	
	byte[] bs =str.getBytes("GBK");
	for(int i =0; i<bs.length;i++){
		System.out.println(bs[i]); //编码,将内容转化为 二进制编码
	}
	
	// 解码  要使用相同的编码集
	String str1 =new String(bs,"GBK");
	System.out.println(str1);
	
	//编码解码字符集不同 会产生数据转换出错
	
	byte[] bs1 =str.getBytes("UTF-8");
	
	String str2 =new String(bs1,"GBK");
	System.out.println(str2);
	
}

}
运行效果图:
在这里插入图片描述
package day32.t2;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class TestBuffered {

public static void main(String[] args) throws Exception {
	FileWriter fw =new FileWriter("Files\\buf.txt");
	
	PrintWriter pw =new PrintWriter(fw);
	
	pw.println("Hello");
	pw.println("World");
	pw.println("SayGoodBye"); // println 自动换行
	
	pw.flush();
	
	FileReader fr= new FileReader("Files\\buf.txt");
	
	BufferedReader br =new BufferedReader(fr); //过滤流 提供读一行的操作

// br.readLine();//此方法为读一行方法
while(true){
String str = br.readLine();
if(str == null){
break;
}
System.out.println(str);
}

}

}

运行效果图:
在这里插入图片描述
在这里插入图片描述
package day32.t2;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class TestConvertStream {

public static void main(String[] args) throws Exception {
	OutputStream os = new FileOutputStream("Files\\Convert.txt");
	
	OutputStreamWriter osw =new OutputStreamWriter(os,"UTF-8");
	
	PrintWriter pw =new PrintWriter(osw);
	pw.println("你好世界");
	pw.println("你好java");
	pw.println("你好Web");
	
	pw.flush();
	pw.close();
	
	InputStream is =new FileInputStream("Files\\Convert.txt");
	
	InputStreamReader isr =new InputStreamReader(is,"UTF-8");
	
	BufferedReader br =new BufferedReader(isr);
	
	while(true){
		String str =br.readLine();
		if(str==null){
			break;
		}
		System.out.println(str);
	}
	br.close();
}

}
运行效果图:

在这里插入图片描述
在这里插入图片描述
package day32.t2;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TestWriter {

public static void main(String[] args) throws Exception {
	
	FileWriter fw =new FileWriter("Files\\char.txt");
	
	fw.write("今天天气好123abc");
	char[] chars = new char[]{'你','好','吗'};
	fw.write(chars);
	
	fw.flush();
	
	FileReader fr= new FileReader("Files\\char.txt");
	
	char[] cache = new char[4];
	while(true){
		int n =fr.read(cache);
		if(n == -1){
			break;
		}
		for(int i =0 ;i<n;i++){
			System.out.print(cache[i]);
		}
		System.out.println();
	}

}

}
运行效果图:

在这里插入图片描述
package day32.t3;

import java.io.File;
import java.io.FileFilter;

public class TestListFiles {

public static void main(String[] args) {
	
	File files =new File("D:\\BaiduNetdiskDownload");
	
	String[] file =files.list();
	for(String f:file){
		System.out.println(f); //返回的是String类型数组,只是单纯的文件名
	}
	
	System.out.println("----------------------------");
	
	File[] f = files.listFiles(new MyFilter());
	for(File fi:f){
		System.out.println(fi.getName());
	}
	
}

}
class MyFilter implements FileFilter{

@Override
public boolean accept(File pathname) {
	if(pathname.isFile()){
		if(pathname.getName().endsWith(".txt")){
			return true;
		}
	}
	return false;
}

}
运行效果图:

在这里插入图片描述
package day32.t4;

import java.io.File;
import java.io.FileFilter;

public class TestFilter {
static int count = 0;

public static void main(String[] args) {

	File file = new File("D:\\");

	showall(file);
	System.out.println("一共" + count + "个文件");

}

public static void showall(File dir) {

	File[] files = dir.listFiles(new FileFilter() {

		@Override
		public boolean accept(File pathname) {
			if (pathname.isDirectory()) { // 判断是不是文件夹
				return true;
			}
			if (pathname.isFile()) {
				if (pathname.getName().endsWith(".class")) {
					return true;
				}
			}
			return false;
		}
	});
	if (files != null) {
		for (File f : files) {
			if (f.isFile()) {
				count++;
				System.out.println(f.getName());
			} else {
				showall(f);
			}
		}
	}

}

}

运行效果图:
在这里插入图片描述

课后习题

  1. ABD

  2. file = new File(“hello.txt”);
    System.out.println(file.Exists());
    System.out.println(file.getAbsolutePath());

  3. FileWriter类:可以输入一个字符串,或者字符数组,而且需要调用方法换行,产生代码的冗余不可以设置字符编码集
    PrintWriter类,利用Printlb方法,输入内容,自动换行,可以一行输入,不可以设置字符编码集
    利用FileOutputStream 并通过OutputStreamWriter类获得Writer 既可以输入一行内容 还可以设置字符编码集,提高了代码的应用宽度

  4. .java源文件 :字节流字符流都可以
    .class 字节码文件 : 字节流字符流都可以
    .html网页文件: 字节流
    .jpg 图像文件: 字节流
    .MP3音乐文件: 字节流

  5. ObjectInputStream 读对象
    ObjectOutputStream 写对象
    BufferedInputStream 缓冲功能
    BufferedOutputStream 缓冲功能
    PrintWriter 写字符串并换行
    PrintStream 字符流
    BufferedReader 读一行文本

  6. package day32.t5;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class TestQ13_14 {

public static void main(String[] args) throws Exception {
	OutputStream os = new FileOutputStream("D:\\develop_tools\\课堂练习\\day32\\text.txt");
	
	OutputStreamWriter osw =new OutputStreamWriter(os,"GBK");
	
	PrintWriter pw =new PrintWriter(osw);
	pw.println("床前明月光");
	pw.println("疑是地上霜");
	pw.println("举头望明月");
	pw.println("低头思故乡");
	osw.flush();
	
	
	List<String> list = new ArrayList<String>();
	InputStream is =new FileInputStream("D:\\develop_tools\\课堂练习\\day32\\text.txt");
	InputStreamReader isr =new InputStreamReader(is,"GBK");
	BufferedReader br =new BufferedReader(isr);
	while(true){
		String s = br.readLine();
		if(s == null){
			break;
		}
		list.add(s);
	}
	
	
	OutputStream os1 = new FileOutputStream("D:\\develop_tools\\课堂练习\\day32\\text2.txt");
	
	OutputStreamWriter osw1 =new OutputStreamWriter(os1,"UTF-8");
	
	PrintWriter pw1 =new PrintWriter(osw1);
	
	for(int i=list.size()-1;i>=0;i--){
		pw1.println(list.get(i));
	}
	
	pw1.flush();
	
}

}

运行效果图:
在这里插入图片描述
在这里插入图片描述
17.
解题思路:
先创建txt文件,录入年份/球队名称 ,然后用Reader读出,并存入Map集合中,Key为年份,Value为球队, 注意 其中应该用Split 分割字符串,以“/”拆分,返回的是一个String[] 数组, String[0]为年份,String[1]为球队名称
然后使用是否包含key进行循环,包含的话使用get(key)输出球队名 否则输出 没有举行世界杯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值