1:核心类
类 | 说明 |
---|---|
File | 文件类 |
InputString | 字节输入流 |
OutputString | 字节输出流 |
Reader | 字符输入流 |
Writer | 字符输出流 |
Closeable | 关闭流接口 |
Flushable | 刷新流接口 |
Serializable | 序列化接口 |
2:File.
Constructor | 描述 |
File(File parent , String child) | 从父抽象路径和自路径名字符串创建的File实例 |
File(String pathname) | 通过将给定的路径名字符串换为抽象路径来创建新的File实例 |
File(String parent , String child) | 从父路径名字符串和子路径名字符串创建新的File实例 |
File(URI uri) | 通过将给定的file:URI转换为路径名来创建新的File实例 |
例:构建File对象的三种方法
String path = "D:/text/text.txt"; //建议使用"/"
//构建File对象,方法一:
File scr = new File(path);
System.out.println(scr.length());
//方法二:
scr = new File("D:/text","text.txt");
System.out.println(scr.length());
//方法三:
scr = new File(new File("D:/text"),"text.txt");
System.out.println(scr.length());
/**运行结果: 20
* 20
* 20
*/
3:API的使用
API | 说明 |
pathSeparator | 路径|路径分隔符 |
File(String parent,String chile) File(File parent, String child) File(String name) | 构造器 没有盘符以user.dir作为相对目录 |
getName() getPath() getAbsolutePath() getParent() | 文件名、路径名 |
exists() isFile() isDirectory() | 判断状态 |
length() | 文件长度 |
createNewFile() delete() | 创建新文件,删除文件 |
mkdir() mkdirs() | 创建目录,如果父目录链不存在一同创建 |
list() | 下级名称 |
listFiles | 下级File |
listRoots | 根目录 |
- 字节流
- 定义:二进制数据,最基本的单元字节。
- 类型:所有文件,一般图片、音频、视频等文件类型,不支持Unicode码元读写。
- 字节流操作中输入流祖先:InuptStream抽象类。
字节流操作中输入流祖先:OutputStream抽象类
怎么读写字节流:
最常用的处理输入流类:FileInputStream【读文件里面——二进制数据】
读控制台中输入的数据:System.in对象
最常用的处理输出流类:FileOutputStream
写到控制台:System.out对象
- 注意:字节流在默认的操作下不支持缓存,意味着每调用一次read方法都会请求操作系统读取一个字节,伴随着磁盘进行一次IO,效率低,一定要求加缓存区,BufferedInputStream(FileleInputStream)、BufferedOutputStream(FileOutputStream)
- 字符流
- 定义:Unicode码元(2个字节|一个字符),通常处理的都是一些文本数据。
- 类型:.txt .doc ……..
- 常用类:
字符流操作中的输入流祖先:Reader抽象类
字符流操作中的输出流祖先:Writer抽象类
责编呢读写字符流:
最常用的处理输入流类:FileReader
读控制台也可以读文件中的字符数据Scanner类
New Scanner(System.out)
File f =new File(“d://aa.txt”);
New Scanner(f);
最常用的处理输出流类:FileWrite
输出值控制台也可以输出至文件PrintWrite类【自带缓存】
New PrintWrite(System.in);
File f = new File(“d://aa.txt”);
New PrintWrite(f);
- 注意:字符流在默认的操作下不支持缓存,意味着每调用一次rea方法都会请求操作系统读取一个字节,伴随着磁盘进行一次IO,小留底,一定要求加缓冲区,BufferedReader(FileReader)、BufferedWriter(FileWrite)
- 字节与字符的转换
inputStreamReader:将InputStream中读入的字节流转为字符流
例:
//控制台输入字符,并写入文件
public static void rw1() throws IOException {
File f = new File("d://aaa.txt");
FileOutputStream fos = new FileOutputStream(f);
BufferedOutputStream bos = newBufferedOutputStream(fos);
byte[] b = new byte[1024];
int count = System.in.read(b);
bos.write(b);
bos.close();
fos.close();
}