java 文件操作
一、相关知识学习
1、 获取文件的属性信息
- boolean exists():判断文件或目录是否存在
- String getName():返回文件或目录的名称
- String getParent():返回父路径的路径名字符串
- String getAbsolutePath():返回绝对路径的路径名字符串
- String getPath():返回抽象路径的路径名字符串
- boolean isAbsolute():判断当前路径是否为绝对路径
- boolean isDirectory():判断当前文件是否为目录
- boolean isFile():判断当前文件是否为一个标准文件
- boolean isHidden():判断当前文件是否是一个隐藏文件
- long lastModified():返回当前文件最后一次被修改的时间
- long length():返回当前文件的长度
- boolean canRead():判断是否可读
- boolean canWrite():判断是否可写
2、 实现文件和文件夹的操作
- createNewFile():创建文件
- delete(): 删除文件
- renameTo():移动文件
- mkdir()和mkdirs():创建文件夹
- delete(): 删除文件夹
3、字节流
主要包含InputStream和OutputStream两个基础类。
- FileInputStream/FileOutputStream(读写文件)
- BufferedInputStream/BufferedOutputStream(读写缓冲流)
- ByteArrayInputStream/ByteArrayOutputStream(按字节数组读写内存中临时数据)
- DataInputStream/DataOutputStream(读写基本类型和String)
- ObjectInputStream/ObjectOutputStream(读写对象)
- PipedInputStream/PipedOutputStream(主要在线程中使用)
- PrintStream(打印流,可以一次写一行)
4、字符流
主要包含Reader和Writer两个基础类。
- FileReader/FileWriter(只能采用系统默认编码方式读写)
- InputStreamReader/OutputStreamWriter(转换流,采用指定编码方式读写)
- BufferedReader/BufferedWriter(缓冲流,借助readLine()和newLine()可以一次读写一行)
- CharArrayReader/CharArrayWriter(按字符数组读写)
- PipedReader/PipedWriter(主要在线程中使用)
- PrintWriter(打印流,可以一次写一行)
二、训练
1、完成一个java application应用程序,判别指定路径下指定文件名的文件是否存在。如果指定文件存在,读取并分别显示其修改时间和文件大小等属性。
java程序(test1.java)
import java.io.*;
import java.sql.Date;
public class test1 {
public static void main(String[] args) {
File f=new File("E:\\yb\\one.txt");创建File对象
if (f.exists()) {//判断该路径下的文件是否存在
System.out.println("查找的文件存在!");
System.out.println("文件的修改时间为:"+new Date (f.lastModified()));//输出文件的修改日期
System.out.println("文件大小:"+f.length());//输出文件的大小
} else {
System.out.println("查找的文件不存在!");
}
}
}
运行效果图
2、以文本方式打开某一指定路径指定文件名的文本文件,读取其内容并显示。
java程序(test2.java)
import java.io.*;
public class test2 {
public static void main(String[] args) {
FileReader fr = null;
int c = 0;
try {
fr = new FileReader("e:\\yb\\one.txt");//创建FileReader对象
while ((c = fr.read()) != -1) {//读取文本中的内容,如果返回值为-1,说明文件已经读取完毕
System.out.print((char)c);
}
fr.close();//关闭FileReader流
} catch (FileNotFoundException e) {//异常处理
System.out.println("找不到指定文件");
} catch (IOException e) {
System.out.println("文件读取错误");
}
}
}
运行效果图
3、以文本方式向某一指定路径指定文件名的文本文件写入指定文本内容,例如写入自己的姓名和学号。
java程序(test3.java)
import java.io.*;
public class test3 {
public static void main(String[] args) {
int b = 0;
try {
File in = new File("e:/yb/two.txt");//创建File对象,two.txt是提供内容的文本
File out = new File("e:/yb/one.txt");//创建File对象,one.txt是要写入的文本
BufferedReader fr = new BufferedReader(new FileReader(in));//把读取的数据给fr
BufferedWriter fw = new BufferedWriter(new FileWriter(out,true)); //把添加的内容添加到末尾
String line = fr.readLine(); //将读取的内容给line
fw.write(line); //将line内容写到fw中
fw.flush(); //清空缓存区
fr.close(); //关闭reader流
fw.close();//关闭writer流
} catch (FileNotFoundException e2) {
System.out.println("找不到指定文件"); System.exit(-1);
} catch (IOException e1) {
System.out.println("文件内容写入错误"); System.exit(-1);
}
System.out.println("文件内容已写入");
}
}