您的位置:首页 > 编程语言 > Java开发

java本地文件操作

2017-03-29 11:58 375 查看


一、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();
}

}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26


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("删除失败");
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


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);
}
}
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10


三、文件夹的创建、删除、重命名


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();
}
}
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10

这样就走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("文件夹创建失败");
}
}

}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


3.2创建多级文件夹

创建含义子文件夹的文件夹使用mkdirs()函数:
File dir1=new File("Folder/one/two");
dir1.mkdirs()
1
2
1
2


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();
}
}
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10


四、文件属性的读取

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());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42


五、文件属性的设置

文件可读、可写、只读方式设置:
//将文件属性设置为可写:
file.setWritable(true);

//将文件属性设置为可读:
file.setReadable(true);

//设定文件只读:
file.setReadOnly();
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8


六、遍历文件夹

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("文件路径错误.");
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

输出结果:
|--.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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84


七、文件的简单读写

工程目录下放一个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();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: