文件操作
- 使用 File 类操作文件
- 使用 FileInputStream 类读写文件
- 使用 FileOutputStream 类写文本文件
1、操作文件或目录属性
File 对象即可表示文件,也可表示目录,常利用 File 对象来对文件或目录进行基本操作
File类的常用方法
方法 | 说明 |
---|---|
boolean exists() | 测试文件是否存在 |
String getAbsolutePath() | 返回此对象表示的文件的绝对路径名 |
String getParent() | 返回此File对象的路径名的上一级,如果路径名没有上一级,则返回 null |
String getName() | 返回对象表示的文件名称 |
boolean delete() | 删除此对象指定的文件 |
boolean isDirectory() | 测试此 File 对象表示的是否是目录 |
boolean isFile() | 测试此 File 对象表示的是否是文件 |
boolean mkdir() | 创建一个目录,它的路径名由当前的 File 对象指定 |
boolean mkdirs() | 创建 File 对象指定的所有目录 |
boolean createNewFile() | 创建空文件,不创建文件夹 |
2、使用 File 类操作文件和目录属性的步骤
1.引入 File 类
import java.io.File;
2.构造一个文件对象
File file=new File("a.txt");
3.利用 File 类的方法访问文件或文件目录的属性
file.exists(); //判断文件或目录是否存在
file.isFile(); //判断是否是文件
file.isDirectory(); //判断是否是目录
file.getName(); //获取文件或目录名称
file.getPath(); //获取文件或目录的路径
file.getAbsolutePath(); //获取文件或目录的绝对路径
file.lastModified(); //获取文件或目录的最后修改日期
file.length(); //获取文件或目录的大小,单位为字节
实际代码演示
public static void main(String[] args) {
File f=new File("E:/a.txt");
System.out.println(f.isFile());//是不是文件
System.out.println(f.isDirectory());//是不是目录
System.out.println(f.length());//里面内容长度
System.out.println(f.exists());//文件是否存在
File file=new File("E:/abc/def/ggg/a.txt");//绝对路径
System.out.println(file.exists());
file.getParentFile().mkdirs();//创建文件夹
try {
file.createNewFile();//添加文件
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.exists());
file.delete();//删除最后一级文件
}
请读者自行尝试运行,对文件及文件夹进行操作,以提升知识掌握
Java流
前面介绍的 File 类只能对文件或文件夹进行操作,不能对文件里面的内容进行操作;下面就来介绍通过 Java 中的流来对文件里面的内容进行读取和写入操作
流是指一连串的字符;流分为输入流和输出流;输入/输出流是相对于计算机内存来说的,如果输入到内存,则称为输入流;如果从内存中输出则称为输出流
Java 中的输出流主要由 OupputStream 和 Write 作为基础类;输入流则主要由 InputStream 和 Reader 作为基础类
1、使用 FileInputStream 读文件的流程
FileInputStream 称为文件输入流,它是字节输入流 InputStream 抽象类的一个子类,它的作用是将文件中的数据输入到内部存储器(内存)中,可以利用它来读取文本中的数据
- FileInputStream 对象和 String 结果对象声明
- 创建 FileInputStream 对象(文件路径或 File 对象)
- 读单字节或整个读到 byte 数组中
- 转成字符串
- 关闭 FileInputStream 流
- 返回结果字符串
具体应用实例
使用 FileInputStream 读文件
public class TestFileInputStream {
public static void main(String[] args) throws IOException {
String s=read("E:/myDoc/hellow.txt");
System.out.println("文件内容是:");
System.out.println(s);
}
public static String read(String path){
FileInputStream fis=null;
String str=null;
try {
fis=new FileInputStream(path);
byte[]b=new byte[fis.available()];
fis.read(b);
str=new String(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return str;
}
}
注意本地计算机必须含有需要读取的文件,否则会报错,找不到系统文件,运行结果如下
2、使用 FileOutputStream 写文件的流程
- File对象装载文件路径
- 判断文件附加目录是否存在,不存在则创建
- 声明 FileOutputStream 对象
- 创建 FileOutputStream 对象( File 对象,是否追加)
- 把要写的字符串转成 byte 数组,并写入输出流
- 关闭 FileOutputStream 流
具体应用实例
使用 FileOutputStream 写文件
public class TestFileOutputStream {
public static void main(String[] args) {
String str="大家好\r\n我叫小刘\r\n我是一个典型的富二代\r\n我每天除了吃就是睡";
write(str,"E:/text/abc.text",true);
}
public static String write(String str,String path,boolean isAppend){
File f=new File(path);
if (f.getParentFile().exists()){
f.getParentFile().mkdirs();
}
FileOutputStream fos=null;
try {
fos=new FileOutputStream(f,isAppend);
byte[]b=str.getBytes();
fos.write(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return str;
}
}
运行后打开 E 盘会发现多出一个文件夹,其中包含 abc.txt 文件,打开该文件,结果如下图所示