在千峰学习的第32天
今天学习了字符流,字符节点流和字符过滤流等一些流
越努力,越幸运
File 类)以下关于File 类说法正确的是:
A.一个File对象代表了操作系统中的一个文件或者文件夹
B.可以使用File对象创建和删除一 个文件
C,可以使用File对象创建和删除- 个文件夹
D.当-个File对象被垃圾回收时,系统上对应的文件或文件夹也被删除
A B C
class TestMyFile{
public static void main(String args[]) throws Exception{
File file;
//创建一个 File 对象表示当前目录下的“hello.txt”文件
//判断该文件是否存在
//如果该文件存在,则输出该文件的完整路径
}
}
package com.lichenchen.ti;
import java.io.File;
public class TestDemo {
public static void main(String[] args) {
File file =new File("hello.txt");
if(file.exists()){
System.out.println(file.getAbsolutePath());
}
}
}
(字符流、桥转换)要想从某个文件中获得一个字符输出流 ,则至少有以下三种方式:
A.利用FileWriter类
B.利用PrintWriter类
C.利用FileOutputStream类,并通过OutputStreamWriter类获得Writer请简述这三种方式获得Writer的区别。
A 可以写入多个字符
B 具有自动换行的功能,比A更加便捷
C 将字节转换为字符流,可以设置字符编码
字节流、字符流)以下几种文件格式,应当使用字节流还是字符流?
I. java源文件
I. .class字节码文件
I. .html网页文件
IV. jpg图像文件
V.mp3音乐文件
字节流 1,3,5
字符流 2,4
事先在当前目录下准备好一个 test.txt 的文本文件,要求该文本文件是使用
GBK 编码的多行文本文件。如:
test.txt
窗前明月光
疑是地上霜
举头望明月
低头思故乡
利用字节流+桥转换读入这个文本文件,然后按照行的顺序,以 UTF-8 的编码方
式,写到 test2.txt 文件中,例:
test2.txt
低头思故乡
举头望明月
疑是地上霜
窗前明月光
package com.lichenchen.ti;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Testcovwe {
public static void main(String[] args) throws IOException {
InputStream is =new FileInputStream("Files\\test.txt");
InputStreamReader isr =new InputStreamReader(is,"UTF-8");
BufferedReader br =new BufferedReader(isr);
FileWriter fw =new FileWriter("Files\\test2.txt");
BufferedWriter bw =new BufferedWriter(fw);
String str =null;
while((str=br.readLine())!=null){
bw.write(str);
bw.newLine();
}
bw.flush();
在当前目录下创建一个 worldcup.txt 的文本文件,其格式如下:
2006/意大利
2002/巴西
„
该文件采用“年份/世界杯冠军”的方式保存每一年世界杯冠军的信息。
要求:读入该文件的基础上,让用户输入一个年份,输出该年的世界杯冠军。如
果该年没有举办世界杯,则输出“没有举办世界杯
package com.lichenchen.ti;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.FileInputStream;
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 TestCover {
public static void main(String[] args) throws Exception{
OutputStream ops1 =new FileOutputStream("Files\\worldcup.txt");
OutputStreamWriter oust =new OutputStreamWriter (ops1);
PrintWriter pw1 =new PrintWriter(oust);
pw1.println("2006/意大利");
pw1.println("2002/巴西");
pw1.flush();
InputStream ins =new FileInputStream("Files\\worldcup.txt");
InputStreamReader isr =new InputStreamReader(ins);
BufferedReader br1 =new BufferedReader(isr);
System.out.println("请输入一个年份");
Scanner input =new Scanner(System.in);
String i= input.next();
while(true){
String s =br1.readLine();
if(s==null){
System.err.println("没有数据啦");
break;
}
if(s!=null&&s.contains(i)){
System.out.println(s);
continue;
}else{
System.out.println("没有举办世界杯");
break;
}
从命令行中读入一个文件名,判断该文件是否存在。如果该文件存在,则在原文
件相同路径下创建一个文件名为“copy_原文件名”的新文件,该文件内容为原
文 件 的 拷 贝 。 例 如 : 读 入 /home/java/photo.jpg 则 创 建 一 个 文 件
/home/java/copy_photo.jpg 新文件内容和原文件内容相同。
package com.lichenchen.ti;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;
public class TestFiles {
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);
if(file.exists()){
InputStream ist =new FileInputStream(file);
InputStreamReader inr =new InputStreamReader(ist);
BufferedReader bw =new BufferedReader(inr);
OutputStream ost =new FileOutputStream("copy"+file);
OutputStreamWriter ousw =new OutputStreamWriter(ost);
PrintWriter pw =new PrintWriter(ousw);
while(true){
String s =bw.readLine();
if(s==null){
break;
}
pw.println(s);
pw.flush();
}
ost.close();
ousw.close();
}
}
}