课堂案例
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);
}
}
}
}
}
运行效果图:
课后习题
-
ABD
-
file = new File(“hello.txt”);
System.out.println(file.Exists());
System.out.println(file.getAbsolutePath()); -
FileWriter类:可以输入一个字符串,或者字符数组,而且需要调用方法换行,产生代码的冗余不可以设置字符编码集
PrintWriter类,利用Printlb方法,输入内容,自动换行,可以一行输入,不可以设置字符编码集
利用FileOutputStream 并通过OutputStreamWriter类获得Writer 既可以输入一行内容 还可以设置字符编码集,提高了代码的应用宽度 -
.java源文件 :字节流字符流都可以
.class 字节码文件 : 字节流字符流都可以
.html网页文件: 字节流
.jpg 图像文件: 字节流
.MP3音乐文件: 字节流 -
ObjectInputStream 读对象
ObjectOutputStream 写对象
BufferedInputStream 缓冲功能
BufferedOutputStream 缓冲功能
PrintWriter 写字符串并换行
PrintStream 字符流
BufferedReader 读一行文本 -
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)输出球队名 否则输出 没有举行世界杯