千峰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();
}
}
}
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 宋仲基&宋慧乔(我们不公布恋情,我们直接结婚。)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 21天|21天|M&M《见识》04
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)