------- android培训、java培训、期待与您交流! ----------
(一)File类
在io包中,唯一表示与文件本身有关的类就是File类。
public File(String pathname) 实例化File类的时候必须设置好路径
常用方法:
boolean createNewFile() 创建新文件
boolean delete() 删除文件
boolean exists() 判断文件是否存在
boolean isDirectory() 判断给定路径是否是一个目录
long length() 文件的大小
String[] list() 列出指定目录的全部内容,只有名称
File[] listFiles() 列出指定目录的全部内容,列出路径
Boolean mkdir() 创建一个目录
在各个操作系统中,路径的分隔符不一样,例如:
Windows 使用反斜杠:“\”
Linux 使用正斜杠:“/”
想要java程序的可移植性继续保持,则最好用File类的“separator”属性,
(二)字节流与自符流
程序中的输入输出都是以流的形式保存的,流中保存的实际上全部是字节文件
字节流输入数据使用“OutputStream”类完成
输出数据使用“InputStream”类完成
字符流输入数据使用“Write”类完成
输出数据使用“Reader”类完成
- 文件主要的操作步骤
A. 通过File类打开一个文件
B. 通过字节流或字符流的子类,指定输出的位置
C. 进行读/写操作
D. 关闭输入/输出
2.字节流
字节流主要是操作byte类型数据,以byte数组为准。
A.OutputStream是整个io包中字节输出流的最大父类,是一个抽象类,如果是操作的文件,可以使用:FileOutputStream类。
向上转型实例化。
常用方法:
close() 关闭输出流
flush() 刷新缓冲区
write(byte[] b) 将一个byte数组写入数据流
write(byte[] b,int off,int len) 将一个指定范围的byte数组写入数据流
write(int i) 将一个字节数据写入数据流
想要实现以上方法,可使用FileOutputStream实例,它的构造方法有两种:
(1)FileOutStream (File file)对文件进行写入,会覆盖
(2)FileOutStream(File file,boolean append)写入,当append为true可以进行追加操作,在文件尾追加内容;
B.InputStream字节输入流
通过InputStream从文件中把内容读取进来,InputStream是一个抽象类,可以通过
FileInuptStream类进行向上转型对文件进行操作,
常用方法:
int available() 取得输入文件的大小
close () 关闭输入流
int read() 读取内容,以字节的方式读取
int read(byte[] b) 将内容读到byte数组中,同时返回读入的个数
读入是先定义一个字节型数组,但是为了不浪费空间,所以可以通过File类,取得文件的大小,开辟指定大小的空间,publi long length()方法;对byte数组初始化时可以这样:
Bybte b[]=new byte[(int) f . length], int len=input.read(b);
当内容过大时,可以用 int read()方法,看读取的数据是否为“-1”,若是则为读完的标志
3 . 字符流
在程序中一个字符等于2个字节,Reader、Writer两个类专门操作字符流。
A.字符输出流:Writer类
Writer是抽象类,可用FileWrite(File file)类进行实例化,想要进行追加可用
FileWrite(File file,boolean append)进行实例
常用方法:
void close() 关闭输出流
void write(String str) 将字符串输出
void write(char cbuf[ ]) j将字符数组输出
void flush() 强制性清空缓存
B. 字符输入类:Reader
使用FileReader(File file)进行实例
常用方法:
void close() 关闭输出流
int read () 读取单个字符
int read(char[ ] cbuf) 将内容读到字符数组之中,返回读入的长度
4.字节流于字符流的区别
A. 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。 所以在使用字节流时即使没有执行“close()”数据也可以输出,而字符流不行,如果没有关闭,内容还在缓存中,不能输出,因为没有把内容刷新出来,而关闭时会自动进行刷新。
B. 在开发中是使用字节流还是字符流好。在所有的硬盘上保存文件或是进行文件传输的时候都是以字节的方式进行的。包括图片,而字符时只有在内粗中才会形成,所以使用字节的操作时最多的;
------- android培训、 java培训、期待与您交流! ----------