一、File类简介
在java中所有的事务都是对象,文件也不例外,java中使用File类表示文件(包括文件和文件夹).
二、文件的创建、删除、重命名
2.1文件创建
首先创建一个File对象f1, 传入的string参数为文件名,然后使用createNewFile()方法即可创建该文件,文件创建成功createNewFile()方法会返回true,创建失败会返回false.如果文件已经存在会创建失败,可用exists() 方法检测文件是否存在。
package ucas.file.test;
import java.io.File;
import java.io.IOException;
public class FileDemo01 {
public static void main(String[] args) {
File f1 = new File("Test.txt");
try {
if(f1.exists()){
System.out.println("文件已存在无须创建!");
}else{
if (f1.createNewFile()) {
System.out.println("文件创建成功!");
}else{
System.out.println("文件创建失败!");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.2文件删除
文件删除使用delete()方法。
package ucas.file.test;
import java.io.File;
public class FileDeete {
public static void main(String[] args) {
File f1 = new File("Test.txt");
if (f1.exists() == false) {
System.out.println("文件不存在,删除失败!");
} else {
if (f1.delete()) {
System.out.println("删除成功!");
}else{
System.out.println("删除失败");
}
}
}
}
2.3文件重命名
在src目录下存在一个Test.txt文本文件,修改文件名:
package ucas.file.test;
import java.io.File;
public class FileRename {
public static void main(String[] args) {
File f1=new File("src/Test.txt");
File f2=new File("src/TestTwo.txt");
f1.renameTo(f2);
}
}
三、文件夹的创建、删除、重命名
3.1创建文件夹
创建文件夹使用mkdir()方法:
package ucas.file.test;
import java.io.File;
public class FileFolder {
public static void main(String[] args) {
File dir1=new File("src/Folder");
dir1.mkdir();
}
}
这样就走src目录下新建了一个Folder文件夹,刷新后可见.
创建文件夹时先判断是否存在,这样更加规范:
package ucas.file.test;
import java.io.File;
public class FileFolder {
public static void main(String[] args) {
File dir1=new File("src/Folder");
if(dir1.exists()){
System.out.println("文件夹已存在!");
}else{
if(dir1.mkdir()){
System.out.println("文件夹创建成功");
}else{
System.out.println("文件夹创建失败");
}
}
}
}
3.2创建多级文件夹
创建含义子文件夹的文件夹使用mkdirs()函数:
File dir1=new File("Folder/one/two");
dir1.mkdirs()
3.3文件夹的删除
删除文件夹使用delete()函数,但是对于非空文件夹不能一次性删除
删除非空文件夹,可以采用递归的思想:
public static void deleteFolder(File dir) {
File dirFile[] = dir.listFiles();
for (int i = 0; i < dirFile.length; i++) {
if (dirFile[i].isDirectory()) {
deleteFolder(dirFile[i]);
}
dirFile[i].delete();
}
}
四、文件属性的读取
package ucas.file.demo;
import java.io.File;
public class FileDemo3 {
public static void main(String[] args) {
// 文件属性的读取
File file = new File("text.txt");
// 判断文件是否存在
System.out.println("判断文件是否存在:" + file.exists());
// 读取文件名称
System.out.println("读取文件名称:" + file.getName());
// 读取文件路径
System.out.println("读取文件路径:" + file.getPath());
// 读取文件绝对路径
System.out.println("读取文件绝对路径:" + file.getAbsolutePath());
// 读取文件父级路径
System.out.println("父级文件路径:" + new File(file.getAbsolutePath()).getParent());
// 读取文件大小
System.out.println("文件大小:" + (float) file.length() / 1000 + "Kb");
// 文件是否被隐藏
System.out.println("文件是否被隐藏:" + file.isHidden());
// 文件是否可读
System.out.println("文件是否可读:" + file.canRead());
// 文件是否可写
System.out.println("文件是否可写:" + file.canWrite());
//判断是否为文件夹
System.out.println("判断是否为文件夹:"+file.isDirectory());
}
}
五、文件属性的设置
文件可读、可写、只读方式设置:
//将文件属性设置为可写:
file.setWritable(true);
//将文件属性设置为可读:
file.setReadable(true);
//设定文件只读:
file.setReadOnly();
六、遍历文件夹
package ucas.file.demo;
import java.io.File;
public class FileDemo5 {
public static void main(String[] args) {
// 遍历文件夹
//File dir=new File("/Users/yaopan/Documents");
File dir=new File("../");
printFiles(dir,1);
}
public static void printFiles(File dir,int tab){
if(dir.isDirectory()){
File next[]=dir.listFiles();
for (int i = 0; i < next.length; i++) {
for(int j=0;j<tab;j++){
System.out.print("|--");
}
System.out.println(next[i].getName());
if(next[i].isDirectory()){
printFiles(next[i],tab+1);
}
}
}else{
System.out.println("文件路径错误.");
}
}
}
输出结果:
|--.classpath
|--.DS_Store
|--.project
|--.settings
|--|--org.eclipse.jdt.core.prefs
|--bin
|--|--.DS_Store
|--|--Folder
|--|--|--one
|--|--|--|--two
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.class
|--|--|--|--|--IteratorDemo.class
|--|--|--|--|--ListDemo.class
|--|--|--|--|--MapDemo01.class
|--|--|--|--|--SetDemo.class
|--|--|--|--|--VectorDemo.class
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.class
|--|--|--|--|--FileDemo2.class
|--|--|--|--|--FileDemo3.class
|--|--|--|--|--FileDemo4.class
|--|--|--|--|--FileDemo5.class
|--|--|--|--|--FileDemo6.class
|--|--|--|--test
|--|--|--|--|--FileDeete.class
|--|--|--|--|--FileDemo01.class
|--|--|--|--|--FileFolder.class
|--|--|--|--|--FileRename.class
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.class
|--My Folder
|--|--two
|--|--|--three
|--src
|--|--.DS_Store
|--|--Folder
|--|--|--1.txt
|--|--|--1副本 2.txt
|--|--|--1副本 3.txt
|--|--|--1副本 4.txt
|--|--|--1副本 5.txt
|--|--|--1副本 6.txt
|--|--|--1副本 7.txt
|--|--|--1副本 8.txt
|--|--|--1副本 9.txt
|--|--|--1副本.txt
|--|--|--one
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.java
|--|--|--|--|--IteratorDemo.java
|--|--|--|--|--ListDemo.java
|--|--|--|--|--MapDemo01.java
|--|--|--|--|--SetDemo.java
|--|--|--|--|--VectorDemo.java
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.java
|--|--|--|--|--FileDemo2.java
|--|--|--|--|--FileDemo3.java
|--|--|--|--|--FileDemo4.java
|--|--|--|--|--FileDemo5.java
|--|--|--|--|--FileDemo6.java
|--|--|--|--test
|--|--|--|--|--FileDeete.java
|--|--|--|--|--FileDemo01.java
|--|--|--|--|--FileFolder.java
|--|--|--|--|--FileRename.java
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.java
|--tangshi.txt
|--tangshi2.txt
|--Test.txt
|--text.txt
七、文件的简单读写
工程目录下放一个tangshi.txt,里面输入文字,读取输出与写入:
package ucas.file.demo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class FileDemo6 {
public static void main(String[] args) {
// 文件的简单读和写
File file = new File("tangshi.txt");
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader bfr = new BufferedReader(isr);
String line;
while ((line = bfr.readLine()) != null) {
System.out.println(line);
}
bfr.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File file2 = new File("tangshi2.txt");
try {
FileOutputStream fos = new FileOutputStream(file2);
OutputStreamWriter osq = new OutputStreamWriter(fos);
BufferedWriter bfw = new BufferedWriter(osq);
bfw.write("登鹳雀楼\n");
bfw.write("唐 王之涣\n");
bfw.write("白日依山尽,黄河入海流。\n");
bfw.write("白日依山尽,黄河入海流。\n");
bfw.close();
osq.close();
fos.close();
System.out.println("写入完成!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}