一、File类(文件系统操作)
1.概念
全称为 java.io.File 类,来对一个文件(包括目录)进行抽象的描述。//但并不要求文件真实存在//
注:简单来说,File类是硬盘上一个文件的“抽象表示”——文件是存储在硬盘(外存)上,直接通过代码操作硬盘不太方便,就在内存中创建一个对应的对象,操作这个内存的对象,就可以间接的影响到硬盘(外存)的文件情况了~
2.用法
(1)观察get系列的特点和差异
先创建一个IO包,在包中创建IODemo类
(2)普通文件的创建
(3)普通文件的删除
(4)观察目录的创建
(5)观察已创建目录里的内容
(6)观察文件重命名
二、 InputStream, OutputStream(文件内容操作)
1.文件内容操作分类
文件内容操作是由很多类组成:
①针对纯文本文件,提供了一组类——“字符流”(Reader,Writer),读写的基本单位是“字符”。
②针对二进制文件和文本文件,提供了一组类——“字节流”(InputStream,OutputStream),读写的基本单位是“字节”。
注:如何理解字节(字符)流?
字节流就是从内存中读字节(字符)数据的很多方法。
举个例子——从文件(也就是“内存”)读100个字节(字符)的数据,可以选择很多读法:
①一次性读100字节(字符);
②一次读50个字节(字符),分2次读 ;
③一次读20个字节(字符),分5次读 ;
④ 一次读1字节(字符),分100次;等
2.文件内容读写——数据流(stream)
注:
(写)输出流:英文名OutputStream,将内存数据写到硬盘(外存)——用到(Writer、OutputStream)
(读)输入流:英文名InputStream,读硬盘(外存)数据到内存——用到(Reader、InputStream)
3.字节流——InputStream概述
3.1概念
InputStream是一个抽象类(不能够直接实例化一个对象,但是可以new它的子类,例如FileInputStream),使用InputStream时,以写入为文本文件举例。
将硬盘地址内容读入内存数据中,读入的是文本字符对应的ascil码)。
3.2代码示例
需要先在项目目录下准备好一个 hello.txt 的文件,里面填充 "你好世界1111" 的内容
步骤:1)创建对象(打开文件)指定路径
2)读reader/写writer文件
3)关闭close文件 由于try(//实例化类对象自带,不用再写close方法)
注:若文本文件里面的内容是汉字,读汉字时,结果为对应字符集utf8编码(一个汉字占3个字节);数字和字母打印的结果为其对应的ascil码。
4.字节流——OutputStream概述
OutputStream是一个抽象类(不能够直接实例化一个对象,但是可以new它的子类,例如FileOutputStream),使用OutputStream时,以写入为文本文件举例。
将内存数据写入硬盘地址中,写的是对应字节的ascil码,输出在文本文件中查看。
步骤:1)创建对象(打开文件)指定路径
2)读reader/写writer文件
3)关闭close文件 由于try(//实例化类对象自带,不用再写close方法)
注:read和write还可以一次读写多个字节,使用byte【】来表示。read会尽可能地把byte【】给填满,如果读到末尾,返回-1;write会把byte【】所有数据都写入文件。
5.字符流——Reader、Writer(简述)
Reader、Writer都是一个抽象类(不能够直接实例化一个对象,但是可以new它的子类,例如FileReader、FileWriter);
构造方法打开文件时,read方法来读(一次读一个char或者char【】)、writer方法来写(一次写一个char或者char【】或者String)、close方法来关闭~
例如刚才的纯文本文件里有了“abc”,下面体会以下Reader抽象类:
步骤:1)创建对象(打开文件)指定路径
2)读reader/写writer文件
3)关闭close文件 由于try(//实例化类对象自带,不用再写close方法)