千峰Java&Day32课后作业

IO框架 字符编码,File类
1.(File类)

以下关于 File 类说法正确的是: A. 一个 File 对象代表了操作系统中的一个文件或者文件夹 B. 可以使用 File 对象创建和删除一个文件 C. 可以使用 File 对象创建和删除一个文件夹 D. 当一个 File 对象被垃圾回收时,系统上对应的文件或文件夹也被删除

ABC

2.(File类)
2.将下列代码补充完整 class TestMyFile{public static void main(String args[]) throws Exception{ File file; //创建一个 File 对象表示当前目录下的“hello.txt”文件//判断该文件是否存在//如果该文件存在,则输出该文件的完整路径 } }

import java.io.File; public class TestMyFile { public static void main(String args[]) throws Exception { File file; // 创建一个 File 对象表示当前目录下的“hello.txt”文件 file = new File("hello.txt"); // 判断该文件是否存在 // 如果该文件存在,则输出该文件的完整路径 if (file.exists()) { System.out.println(file.getAbsolutePath()); } } }

10.(字符流、桥转换)
10.要想从某个文件中获得一个字符输出流,则至少有以下三种方式: A.利用 FileWriter 类 B.利用 PrintWriter 类 C.利用 FileOutputStream 类,并通过 OutputStreamWriter 类获得 Writer 请简述这三种方式获得 Writer 的区别。

FileWriter可以直接读取文件,可以直接写入字符串 FileWriter fw = new FileWriter(new File("c:\a.txt")); PrintWrite加一个TRUE可以自动刷新缓冲区 PrintWriter pw = new PrintWriter(fw); FileOutStream活动的是字节 fileoutputstream fos = new FileOutputStream(“newPoem.txt”); OutputStreamWriter osw = new OutputStreamWriter(fos,”UTF-8″);

11.(字节流、字符流)
以下几种文件格式,应当使用字节流还是字符流? I..java 源文件 AI..class 字节码文件 BI..html 网页文件 IV. .jpg 图像文件 V..mp3 音乐文件

字节流【2、4、5】 字符流【1、3】

【千峰Java&Day32课后作业】12.(过滤流)
连线题。把过滤流和相应的功能用线连起来。注意,左右两边不是一一对应的关系。 ObjectInputStream字节流 ObjectOutputStream字符流 BufferInputStream读八种基本类型 BufferedOutputStream写八种基本类型 DataInputStream读对象 DataOutputStream写对象 PrintWriter缓冲功能 PrintStream读入一行文本 BufferedReader写字符串并换行

ObjectInputStream(E)A字节流 ObjectOutputStream(F)B字符流 BufferInputStream(AG)C读八种基本类型 BufferedOutputStream(AG)D写八种基本类型 DataInputStream(AC)E读对象 DataOutputStream(AD)F写对象 PrintWriter(BJI)G缓冲功能 PrintStream(A)H读入一行文本 BufferedReader(BGH)I写字符串并换行 BufferedWriter(BGj)J写字符串

14.(字符流、桥转换)
完成下面功能 事先在当前目录下准备好一个 test.txt 的文本文件,要求该文本文件是使用 GBK 编码的多行文本文件。 如:test.txt 窗前明月光 疑是地上霜 举头望明月 低头思故乡 利用字节流+桥转换读入这个文本文件,按照行的顺序,以 UTF-8 编码方式,写到 test2.txt 文件中。 例:test2.txt 低头思故乡 举头望明月 疑是地上霜 窗前明月光

package com.qf.day33.t1.works; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; public class TestPoem { public static void main(String[] args) throws Exception { //要求倒叙! //集合 List> list = new ArrayList>(); FileInputStream fis = new FileInputStream("F:\\test.txt"); InputStreamReader isr= new InputStreamReader(fis,"UTF-8"); BufferedReader br = new BufferedReader(isr); String line; while((line = br.readLine())!=null){//每次循环读到了一行有效数据 list.add(line); //按照顺序添加到集合中 }FileOutputStream fos = new FileOutputStream("F:\\test2.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8"); PrintWriter pw = new PrintWriter(osw); for(int i = list.size()-1; i>=0; i--){ pw.println(list.get(i)); }br.close(); pw.close(); }}

17.(字节流,BufferedReader)
完成下面操作。 在当前目录下创建一个 worldcup.txt 的文本文件,其格式如下: 2006/意大利 2002/巴西 … 该文件采用“年份/世界杯冠军”的方式保存每一年世界杯冠军的信息。 要求:读入该文件的基础上,让用户输入一个年份,输出该年的世界杯冠军。如果该年没有举办世界杯,则输出“没有举办世界杯”

public class Test14 { static void write(String[] str) throws IOException { int year = 2006; for (int i = 0; i < str.length; i++) { str[i] = str[i] + "/" + year; year = year - 4; } BufferedWriter bw = new BufferedWriter(new FileWriter("worldcup.txt")); for (int i = 0; i < str.length; i++) { bw.write(str[i]); bw.newLine(); } bw.close(); } static void read() throws IOException { Scanner a = new Scanner(System.in); String s = a.next(); BufferedReader br = new BufferedReader(new FileReader("worldcup.txt")); boolean flag = false; String str = null; String strarr[] = new String[2]; while ((str = br.readLine()) != null) { strarr = str.split("/", 2); if (strarr[1].equals(s)) { flag = true; System.out.println(strarr[0]); } } if (!flag) { System.out.println("没有举办过世界杯"); } br.close(); } public static void main(String args[]) throws Exception { String str[] = {"意大利", "巴西", "法国", "巴西"}; write(str); read(); } }

18.(综合)
从命令行中读入一个文件名,判断该文件是否存在。如果该文件存在,则在原文件相同路径下创建一个文件名为“copy_原文件名”的新文件,该文件内容为原文件的拷贝。例如:读入 /home/java/photo.jpg 则创建一个文件 /home/java/copy_photo.jpg 新文件内容和原文件内容相同。

import java.io.*; import java.util.Scanner; public class TestFile { public static void main(String[] args) throws IOException { Scanner input = new Scanner(System.in); System.out.println("请输入一个路径:"); String str = input.next(); File file = new File(str); InputStream is = new FileInputStream(str); InputStreamReader isr = new InputStreamReader(is,"UTF-8"); BufferedReader br = new BufferedReader(isr); OutputStream os = new FileOutputStream(file.getParent() + "//copy_" + file.getName()); OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8"); PrintWriter pw = new PrintWriter(osw); if(file.isFile()){File file2 = new File(file.getParent() + "//copy_" + file.getName()); file2.createNewFile(); while(true){ String str3 = br.readLine(); if(str3 == null) break; pw.println(str3); } pw.flush(); pw.close(); } } }

    推荐阅读