文件操作
- 写入文件、读取内容、删除文件
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo {
public static void main(String[] args) {
// 写入文件
try {
// 创建文件
File file = new File("test.txt");
if (file.createNewFile())
System.out.println("文件创建成功!");
else
System.out.println("出错了,该文件已经存在。");
// 在当前目录下生产一个txt文件
BufferedWriter out = new BufferedWriter(new FileWriter("test.txt"));
out.write("向文件写入内容");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
// 读取内容
try {
BufferedReader in = new BufferedReader(new FileReader("test.txt"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
}
// 删除文件
try{
File file = new File("test.txt");
if(file.delete()){
System.out.println(file.getName() + " 文件已被删除!");
}else{
System.out.println("文件删除失败!");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
- 使用 BufferedWriter 类的 read 和 write 方法将文件内容复制到另一个文件
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;
public class Demo {
public static void main(String[] args) throws Exception {
BufferedWriter out1 = new BufferedWriter(new FileWriter("srcfile.txt"));
out1.write("string to be copied\n");
out1.close();
InputStream in = new FileInputStream(new File("srcfile.txt"));
OutputStream out = new FileOutputStream(new File("destnfile.txt"));
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
BufferedReader in1 = new BufferedReader(new FileReader("destnfile.txt"));
String str;
while ((str = in1.readLine()) != null) {
System.out.println(str);
}
in1.close();
}
}
- 使用 filewriter 方法向文件中追加数据
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws Exception {
try {
BufferedWriter out = new BufferedWriter(new FileWriter("filename.txt"));
out.write("aString1\n");
out.close();
out = new BufferedWriter(new FileWriter("filename.txt", true));
out.write("aString2");
out.close();
BufferedReader in = new BufferedReader(new FileReader("filename.txt"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
System.out.println("exception occoured" + e);
}
}
}
- 使用 File 类的 createTempFile(String prefix, String suffix); 方法在默认临时目录来创建临时文件,参数 prefix 为前缀,suffix 为后缀
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
public class Demo {
public static void main(String[] args) throws Exception {
// 创建临时文件,可以使用 createTempFile(String prefix, String suffix, File directory) 中的
// directory 参数来指定临时文件的目录
File temp = File.createTempFile("tmp", ".txt");
System.out.println("文件路径: " + temp.getAbsolutePath());
// 终止后删除临时文件
temp.deleteOnExit();
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write("aString");
System.out.println("临时文件已创建:");
out.close();
}
}
- 使用 File 类的 fileToChange.lastModified() 和 fileToChange setLastModified() 方法来修改文件最后的修改日期
import java.io.File;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws Exception {
File fileToChange = new File("test.txt");
fileToChange.createNewFile();
Date filetime = new Date(fileToChange.lastModified());
System.out.println(filetime.toString());
System.out.println(fileToChange.setLastModified(System.currentTimeMillis()));
// 获取文件最后的修改时间
File file = new File("test.txt");
Long lastModified = file.lastModified();
Date date = new Date(lastModified);
System.out.println(date.toString());
}
}
- 使用 File 类的 file.exists() 和 file.length() 方法来获取文件大小,以字节计算(1KB=1024字节 )
- 使用 File 类的 oldName.renameTo(newName) 方法来重命名文件
- 设置文件只读
- 在指定目录中创建文件
import java.io.File;
import java.io.IOException;
public class Demo {
// 获取文件大小
public static long getFileSize(String filename) {
File file = new File(filename);
// 检测文件是否存在
if (!file.exists() || !file.isFile()) {
System.out.println("文件不存在");
return -1;
}
return file.length();
}
public static void main(String[] args) {
// 获取文件大小
long size = getFileSize("test.txt");
System.out.println("文件大小为: " + size);
// 文件重命名
File oldName = new File("test.txt");
File newName = new File("new.txt");
if (oldName.renameTo(newName)) {
System.out.println("已重命名");
} else {
System.out.println("Error");
}
// 设置文件只读
File file = new File("new.txt");
System.out.println(file.setReadOnly());
System.out.println(file.canWrite());
// 使用 File 类的 file.createTempFile() 方法在指定目录中创建文件
File cfile = null;
File dir = new File("D:\\eclipse-workspace\\hello");
try{
cfile = File.createTempFile("text", ".txt", dir);
}catch(IOException e) {
}
System.out.println(cfile.getPath());
}
}
目录操作
import java.io.File;
import java.io.FileFilter;
//import java.io.FilenameFilter;
import java.util.Date;
import org.apache.commons.io.FileUtils;
public class Demo {
public static void main(String[] args) {
recCreDir("D:\\a\\b\\c");
delDir(new File("D:\\a"));
empDir(new File("D:\\eclipse"));
// 判断文件是否隐藏
System.out.println(new File("D:\\test.txt").isHidden());
// 获取目录大小,先再项目中导入commons-io-2.6.jar
long size = FileUtils.sizeOfDirectory(new File("D:\\eclipse"));
System.out.println("Size:" + size + "bytes");
// 在指定目录中查找所有文件列表
finFil(new File("D:\\eclipse"));
// 获取文件的上级目录
File file = new File("D:\\test.txt");
String strParentDirectory = file.getParent();
System.out.println("文件的上级目录:" + strParentDirectory);
// 获取目录最后修改时间
System.out.println("最后修改时间:" + new Date(file.lastModified()));
// 打印目录结构
// strDir(1, new File("D:\\eclipse\\java-oxygen\\eclipse"));
// 遍历指定目录下的所有目录
allDir(new File("D:\\eclipse\\java-oxygen\\eclipse"));
allFil(new File("D:\\eclipse\\java-oxygen\\eclipse"));
// 查看系统根目录
rooDir();
// 查看当前工作目录
System.out.println("当前工作目录:" + System.getProperty("user.dir"));
// 遍历目录
traDir(new File("D:\\eclipse-workspace\\hello"));
System.out.println("hello, world");
}
// 递归创建目录
public static void recCreDir(String dir) {
File file = new File(dir);
// 使用 File 类的 mkdirs() 实现递归创建目录
boolean result = file.mkdirs();
System.out.println("递归创建目录:" + result);
}
// 删除目录
public static boolean delDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = delDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
if (dir.delete()) {
System.out.println("目录已被删除");
return true;
} else {
System.out.println("目录删除失败");
return false;
}
}
// 判断目录是否为空
public static void empDir(File dir) {
if (dir.isDirectory()) {
if (dir.list().length > 0) {
System.out.println("目录不为空");
} else {
System.out.println("目录为空");
}
} else {
System.out.println("这不是一个目录");
}
}
// 在指定目录中查找文件
public static void finFil(File dir) {
// // 在 C 盘中查找以字母 'b' 开头的所有文件
// FilenameFilter filter = new FilenameFilter() {
// public boolean accept(File dir, String name) {
// return name.startsWith("b");
// }
// };
// String[] children = dir.list(filter);
String[] children = dir.list();
if (children == null) {
System.out.println("该目录不存在");
} else {
for (int i = 0; i < children.length; i++) {
String filename = children[i];
System.out.println(filename);
}
}
}
// 打印目录结构
public static void strDir(int indent, File file) {
for (int i = 0; i < indent; i++)
System.out.print('-');
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
strDir(indent + 4, files[i]);
}
}
}
// 遍历指定目录下的所有目录
public static void allDir(File dir) {
File[] files = dir.listFiles();
FileFilter fileFilter = new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
};
files = dir.listFiles(fileFilter);
System.out.println(files.length);
if (files.length == 0) {
System.out.println("目录不存在或它不是一个目录");
} else {
for (int i = 0; i < files.length; i++) {
File filename = files[i];
System.out.println(filename.toString());
}
}
}
// 遍历指定目录下的所有文件
public static void allFil(File dir) {
String[] children = dir.list();
if (children == null) {
System.out.println("目录不存在或它不是一个目录");
} else {
for (int i = 0; i < children.length; i++) {
String filename = children[i];
System.out.println(filename);
}
}
}
// 遍历系统根目录
public static void rooDir() {
File[] roots = File.listRoots();
System.out.println("系统所有根目录:");
for (int i = 0; i < roots.length; i++) {
System.out.println(roots[i].toString());
}
}
// 遍历目录
public static void traDir(File dir) {
System.out.println(dir);
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
traDir(new File(dir, children[i]));
}
}
}
}