字符编码,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】
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<String> list = new ArrayList<String>();
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();
}
}
}