File I/O
一、操作文件或目录的属性
创建一个File对象的语法格式如下:
File file =new File(String pathName);
例如:File file =new File(“C:\\test.txt”);
File类的常用方法:
boolean exists() 判断文件或目录是否存在
boolean isFile() 判断是否是文件
boolean isDirectory() 判断是否是目录
String getPath() 返回此对象表示的文件的相对路径名
String getAbsolutePath() 返回此对象表示的文件的绝对路径名
String getName() 返回此对象表示的文件或目录的名称
boolean delete() 删除此对象指定的文件或目录
boolean createNewFile() 创建指定名称的空文件,不创建文件夹
long length() 返回文件的长度,单位为字节,若文件不存在,则返回0L
二、Java的流
1.按照流的流向进行划分,可以将流分为输入流和输出流
注意:这里的输入输出都是从程序运行所在的内存角度来划分的。
2.按照所操作的数据单元的不同,流又可分为字节流和字符流。
字节流用于二进制的数据:
字节输入流InputStream基类
字节输出流OutputStream基类
字符流用于文本(中文字符):
字符输入流Reader基类
字符输出流Writer基类
三、读写文本文件
字节流
1、输入流
基类:InputStream
子类:FileInputStream
构造:
FileInputStream(File file)
FileInputStream(String name)
方法:
int read() 读取一个字节数组
int read(byte[] b) 将数据读取到字节数组中
int read(byte [] b ) 从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从off开始
void close() 关闭输入流
int available() 返回输入流读取的估计字节数
示例:
1)、引入相关的类
import java.io.InputStream;等
2)、创建一个文件输入流对象
InputStream fis=new FileInputStream(“/Users/wojiaoyelei/Documents/workspace/java3/newFile.txt");
3)、利用文件输入流的方法读取文本文件的数据
fis.read();
4)、关闭文件输入流对象
fis.close();
2、输出流:
基类:OutputStream
子类:FileOutputStream
构造:
FileOutputStream(File file)
file 指定文件目标数据源。
FileOutputStream(String name)
name 指定文件目标数据源,包含路径信息。
FileOutputStream(String name, boolean append)
name 指定文件目标数据源,包含路径信息。append 表示是否在文件末尾添加数据,若设置为true,则在文件末尾添加数据。
方法:
close()关闭流
flush() 刷新缓冲区
write(byte[]b) 写入数组b的所有字节
write(byte[]b, int off, int len) 将字节数组从off位置开始,长度为len的字节数据输出到输出流中。
write(int b) 写入一字节数据
示例:
1)、引入相关的类。
2)、构造一个文件输出流对象。
OutputStream fos=new OutputStream(“C:\\test.txt”);
3)、利用文件输出流的方法把数据写入文本文件中
String str=“大大”;
byte[] words=str.getBytes();
//利用write方法将数据写入文件中
fos.write(words,0,words.length);
4)、关闭文件输出流
fos.close();
字符流
1.输入流
基类:Reader
子类:FileReader,BufferedReader
构造方法:
FileReader(String fileName)指要从中读取数据的文件的名称
BufferedReader(Reader in):
常用方法:
int read() 从输入流中读取单个字符
int read(byte[] c) 从输入流中读取c.length长度的字符,保存到字符数组c中,返回实际读取的字符数
read(char[] c,int off, int len ) 从输入流中读取最多len长度的字符,保存到字符数组c中,保存的位置从off开始,返回实际读取的字符长度
void close() 关闭流
BufferedReader示例:
1)引入相关的类
2)创建一个BufferedReader对象
Reader fr=new FileReader(“C:\\Test.txt”);
BufferedReader br=new BufferedReader(fr);
3)利用BufferedReader类的方法读取文本文件的数据
br.readLine();//读取一行数据
String line=br.readLine();
while(line!=null){
System.out.println(line);
line=br.readLine();
}//读取整个文件的数据
4)关闭流
2.输出流
基类:Writer
子类:FileWriter,BufferedWriter
构造:
常用方法:
write(String str) 将str字符串里包含的字符输出到指定的输出流中
write(String str, int off, int len) 将str字符串里从off位置开始长度为len的字符输出到输出流中
void close() 关闭输出流
void flush() 刷新输出流
BufferedWriter示例:
1)引入相关类
2)构造一个BufferedWriter对象
3)利用BufferedWriter类的方法写文本文件
bw.write(“hello”);
4)相关流对象的清空和关闭
bw.flush();//刷新流的缓冲
fw.close();//关闭此流