- 使用file类操作文件或目录的属性
File对象既可以表示文件,也可以表示目录。在程序中,file对象可以对文件或目录进行基本操作。他可以查出与文件相关的信息。
创建file对象:
File file=new File(“C:\\test.txt”);
File file=new File(“C:/test.txt”);
在windows操作系统中,文件路径名中的分隔符可以使用“/”,也可以使用反斜杠“\”,但必须写成“\\”,表示转义。
- file类的常用方法
Boolean exists():判断文件或目录是否存在
Boolean isFile():判断是否是文件
Boolean isDirectory():判断是否是目录
String getPath():文件的相对路径
String getAblutePath():文件的绝对路径
String getName():文件或目录的名称
Boolean delete():删除指定的文件或目录
Boolean createNewFile():创建空文件,不创建目录
Long length():返回文件的长度,单位为字节,若文件不存在,则返回0L
- java的流
读文件:是把文件中的数据读取到内存中
写文件:是把内存中的数据写到文件中
流:是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道
流具有明确的方向性:当向一个流写入数据的时,这个流被称为输出流。
流对象:构造输入/输出流的对象称为流对象,流对象在构造的时候往往会和数据源联系起来。
数据源:分为源数据(输入流)和目标数据源(输出流)
- 流的划分
- 流的方向
输入流:InputStream 和 Reader 作为基类,只能读入数据(读入到内存)
输出流:OutputStream 和 Writer 作为基类,只能写出数据(写出到文件)
- 操作的数据单元
字节流
字节输入流:InputStream作为基类
字节输出流:OutputStream作为基类
字符流
字符输入流:Reader 作为基类
字符输出流:Writer作为基类
字节流的最小数据单元为8位的字节,而字符流的最小数据单元是16位的字符
字节流用于二进制数据(图片),而字符流用于文本。
- 字节流读取文件
字节输入流InputStream
常用方法:
Int read():读取一个字节数据
Int read(byte[] b):将数据读取到字节数组中
Int read(byte[] b,int off,int len):从输入流中读取最多len长度的字节,保存到字节数组b中,保存的 位置从off开始
void close():关闭输入流
Int available():返回输入流读取的估计字节数
无参的read()方法从输入流中读取一个八位的字节,把它转换为0-255的整数返回
字节输入流FileInputStream
在实际应用中,通常使用InputStream的子类FileinputStream来实现对文件内容的读取,常用的的构造方法有两个
- FileInputStream(File file)
File file=new File(“C:/teat.txt”);
FileinputStrem(InputStream) fileobject=new FileinputStrem(file);
- FileInputStream(String name)
FileinputStrem(InputStream) fileobject=new FileinputStrem(“C:/teat.txt”);
使用字节输入流FileInputStream读取文件的步骤
- 引入相关的类
- 创建文件输入流对象
- 利用文件输入流的方法读取内容
- 关闭文件输入流对象
读取:
int date;
while((date=fileInputStream.read())!=-1){//读取不到返回-1
System.out.println((char)date);
}
注意:
(1)read()方法返回整数,若读取的是字符串需要强制类型转换
- 字节流写文本文件
字节输出流:OutputStream
常用方法:
Void write(int c):写入一个字节数据
Void write(byte[] buf):写入数组buf的所有字节
Void write(byte[],int off,int len):将字节数组从off位置开始,长度为len的字节数据输出到输出流中
Void close():关闭输出流
字节输出流:FileOutputStream
在实际应用中,通常使用OutputStream的子类FileOutputStream来实现对文件内容的写入,常用的的构造方法有三个
(1)FileOutputStream(File file)
File file=new File(“C:/teat.txt”);
FileOutputStream(InputStream) fileobject=new FileOutputStream(file);
(2)FileOutputStream(String name)
FileOutputStream(OutputStream) fileobject=new FileOutputStream(“C:/teat.txt”);
- FileOutputStream(String name,boolean append);
FileOutputStream(OutputStream) fileobject=new FileOutputStream(“C:/teat.txt”,true);
注意:第一种和第二种构造方法在向文件写入数据的时候将会覆盖文件中的所有内容。在使用FileOutputStream创建实例时,如果文件不存在,则会创建一个空的文件夹;如果路径所表示的是一个目录,
则会抛出FileNotFoundException异常
使用字节输出流FileOutputStream写入文件的步骤
- 引入相关的类
- 创建文件输出流对象
- 利用文件输出流的方法写入内容
- 关闭文件输流对象
- 使用字符流读取文件
字符输入流Reader类
常用方法:
Int read():从输入流读取单个字符
Int read(char[] c):从输入流中读取C.length长度的字符,保存到字符数组c中,返回实际读取的字符数
Int read(char[] c,int off,int len):从输入流中读取最多len长度的字符,保存到字符串数组c中,保存的位置是从off位置开始,返回实际读取的字符长度
Void close():关闭流
字符输入流:FileReader类
FileReader类是Reader类的子类,常用的构造方法
(1)FileReader(File file)
File file=new File(“C:/teat.txt”);
FileReader(FReader) fileobject=new FileReader(file);
(2)FileReader(String name)
FileReader(Reader) fileobject=new FileReader(“C:/teat.txt”);
步骤:
- 引入相关的类
- 创建一个FileReader读取文件
- 利用FileReader类的方法读取文本文件
- 关闭相关的流
字符输入流Bufferedreader类
BufferedReader类是reader类的子类,它他与filereader类的区别在于,Bufferedreader类带有缓冲区域,它可以把一批数据读到缓冲区,接下来的读操作都是从缓冲区内部获取数据,避免每次数据进行字符编码转换,从而提高工作效率。
构造方法:
(1)BufferedReader(Reader in)
FileReader(Reader) fileobject=new FileReader(“C:/teat.txt”);
BufferedReader buffer=new BufferedReader(fileobject);
步骤:
- 引入相关的类
- 创建一个BufferedReader读取文件
- 利用BufferedReader类的方法读取文本文件(readLine()-读取完毕返回null)
- 关闭相关的流
- 使用字符流写入文件
字符输出流write类
常用方法:
write(String str):将str字符串里包含的字符输出到指定的输出流中
write(String str,int off,int len):将str字符串里从off位置开始长度为len的字符输出到输出流中
void close():关闭输出流
void flush():刷新输出流
字符输入流:Filewriter类
Filewriter类是writer类的子类,常用的构造方法
(1)Filewriter(File file)
File file=new File(“C:/teat.txt”);
Filewriter(writer) fileobject=new Filewriter(file);
(2)Filewriter(String name)
Filewriter(writer) fileobject=new Filewriter(“C:/teat.txt”);
(3)Filewriter(String name,boolean append)
Filewriter(writer) fileobject=new Filewriter(“C:/teat.txt”,true);
步骤:
(1)引入相关的类
(2)创建一个Filewriter对象
(3)利用Filewriter类的方法写出文本文件
(4)相关流对象的清空和关闭
字符输入流BufferedWrite类
BufferedWrite类是Write类的子类,BufferedWrite类与BufferedReader类的流方向正好相反,BufferedWrite是把一批数据写到缓冲区,当缓冲区满的时候,在把缓冲区的数据写到字符输出流中,这样可以避免每次都执行物理写操作,从而提高输入/输出操作的效率。
构造方法:
(1)BufferedWrite(Reader in)直接覆盖
FileReader(Reader) fileobject=new FileReader(“C:/teat.txt”(,true));
BufferedReader buffer=new BufferedReaderf(ileobject);
步骤:
(1)引入相关的类
(2)创建一个BufferedWriter对象写文件
(3)利用BufferedWriterr类的方法写文本文件
(4)相关流对象的清空和关闭
9.二进制文件的读写
字节输入流DateInputStream类
构造方法:
(1)DateInputStream(InputStream in)直接覆盖
FileInputStream(InputStream) fileobject=new FileInputStream(“C:/teat.txt”(,true));
DateInputStream buffer=new DateInputStream(fileobject);
步骤:
(1)引入相关的类
(2)创建一个数据输入流对象
(3)利用数据输入流的方法读取二进制文件的数据
(4)关闭数据输入流
字节输出流DateOutputStream类
构造方法:
(1)DateOutputStream(InputStream in)直接覆盖
FileOutputStream(InputStream) fileobject=new FileOutputStream(“C:/teat.txt”(,true));
DateOutputStream buffer=new DateOutputStream(fileobject);
步骤:
(1)引入相关的类
(2)创建一个数据输出流对象
(3)利用数据输出流的方法读取二进制文件的数据
(4)关闭数据输出流