#在千锋“逆战”学习第32天#IO框架、Question13

File类
概念:代表物理盘符中的一个文件或文件夹
方法:
CreatNewFile()//创建一个新文件
Mkdir()//创建一个新目录
Delete()//删除文件或空目录
Exists()//判断File对象所代表的对象是否存在
getAbsolutePath//获取文件的绝对路径
getName()//取得名字
getParent()//获取文件/目录所在的目录
isDrectory()//是否是目录
isFile()//是否是文件
length()//获得文件的长度
listFiles()//列出目录中的所有内容
reNameTo()//修改文件名为

FileFileter接口
public interface FileFileter
boolean accept(File pathname)
当调用File类中的listFile()方法时,支持传入FileFileter接口接口实现类,对获取文件进行过滤,只有满足条件的文件才可以出现在listFile()的返回值中。

字符编码
ISO-8859-1 收录除ASCLL外,还包括西欧,希腊语,泰语,阿拉伯语,希伯来语对应的文字符号。
UTF-8 针对Unicode的可变长度字符编码 (常用)
GB2312 简体中文
GBK 简体中文 扩充 (常用)
BIG5 台湾 繁体中文

注意:当编码方式和节码方式不一致时,会出现乱码

字符流
字符流的父类:

Reader:字符输入流
public int read(){}
public int read(char[] c){}
public int read(char[] b,int off,int len

Writer:字符输出流
public void write(int n){}
public void write(String str){}
public void write(char[] c){}

字符节点流
FileWriter:
public void write(String str)//一次写多个字符,将b数组中所有字符写入输出流

FileReader:
public int read(char[] c)//从流中读取多个字符,将读到的内容存入c数组,返回实际读到的字符数,如果达到文件的尾部,则返回-1

字符过滤流
缓冲流:BufferredWriter/BufferedReader
支持输入换行符
可以写一行,读一行

PrintWriter:
封装了print()/println()方法,支持写入后换行

字符节点流
桥转换流:InputStreamReader/OutputStreamWriter
可将字节流转换为字符流
可设置字符的编码方式
使用步骤:
创建节点流
[创建过滤流,设置字符编码集]
封装过滤流
读写数据
关闭流

-----------------------------------------------------------------------------作业分割线

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

答:BC
A:对象代表了文件或文件夹的引用

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

  2. (过滤流)利用 Data 流,完成下面操作:
    I. 判断当前目录下是否存在一个“test.dat”的文件,如果该文件不存在,则往该文件中写入一个 long
    类型的数值:10000L
    II. 如果该文件存在,则从该文件中读出数值,并把该数值加 1 之后,再存回文件中。

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

答:FileWriter类写出的字符串无法换行。PrintWriter类下的print()/println()方法支持写入后换行,
通过OutputStreamWriter类获得的Writer方法可以设置字符的编码格式。

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

  2. (过滤流)连线题。把过滤流和相应的功能用线连起来。注意,左右两边不是一一对应的关系。
    在这里插入图片描述

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

在这里插入图片描述
17. (字节流,BufferedReader)完成下面操作。
在当前目录下创建一个 worldcup.txt 的文本文件,其格式如下:
2006/意大利
2002/巴西
…该文件采用“年份/世界杯冠军”的方式保存每一年世界杯冠军的信息。
要求:读入该文件的基础上,让用户输入一个年份,输出该年的世界杯冠军。如果该年没有举办世界杯,
则输出“没有举办世界杯”
在这里插入图片描述
18. (综合)
从命令行中读入一个文件名,判断该文件是否存在。如果该文件存在,则在原文件相同路径下创建一个文件名为“copy_原文件名”的新文件,该文件内容为原文件的拷贝。 例如:读入 /home/java/photo.jpg则创建一个文件 /home/java/copy_photo.jpg 新文件内容和原文件内容相同。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章