forked from fanspaceshow/CodeTemplate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNioOp.java
179 lines (139 loc) · 5.58 KB
/
NioOp.java
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
package com.zhangjikai.nio;
import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.DosFileAttributes;
import java.nio.file.attribute.PosixFileAttributes;
import java.nio.file.attribute.PosixFilePermissions;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
* NIO2 基本文件操作
* Created by zhangjk on 2016/1/17.
*/
public class NioOp {
private static SimpleDateFormat sFormat = new SimpleDateFormat("yyyy-MM-DD hh:MM:ss");
/**
* 检查文件是否存在
*/
public static void checkFileExists() {
Path path = Paths.get("E:\\program_new\\java\\jdk1.7\\include");
if (Files.exists(path)) {
System.out.println("file exists");
}
if (Files.notExists(path)) {
System.out.println("file not exists");
}
// 不能访问
if (!Files.exists(path) && !Files.notExists(path)) {
System.out.println("file can't access");
}
}
/**
* 获得文件属性
*/
public static void getFileAttributes() {
Path path = Paths.get("F:\\test");
BasicFileAttributes basicAttr = null;
DosFileAttributes dosAttr = null;
PosixFileAttributes posixAttr = null;
try {
basicAttr = Files.readAttributes(path, BasicFileAttributes.class);
// 文件创建时间 attr.creationTime() 类型为 FileTime, 无法直接格式化, 需要用下面的方式
System.out.println("creationTime: " + sFormat.format(basicAttr.creationTime().toMillis()));
// 文件最后访问时间
System.out.println("lastAccessTime: " + sFormat.format(basicAttr.lastAccessTime().toMillis()));
// 文件最后修改时间
System.out.println("lastModifiedTime: " + sFormat.format(basicAttr.lastModifiedTime().toMillis()));
// 是否为文件夹
System.out.println("isDirectory: " + basicAttr.isDirectory());
System.out.println("isOther: " + basicAttr.isOther());
// 是否为常规文件
System.out.println("isRegularFile: " + basicAttr.isRegularFile());
// 是否为链接
System.out.println("isSymbolicLink: " + basicAttr.isSymbolicLink());
// 文件大小
System.out.println("size: " + basicAttr.size());
dosAttr = Files.readAttributes(path, DosFileAttributes.class);
// 是否只读
System.out.println("isReadOnly is " + dosAttr.isReadOnly());
// 是否隐藏
System.out.println("isHidden is " + dosAttr.isHidden());
// 是否压缩文件
System.out.println("isArchive is " + dosAttr.isArchive());
// 是否系统文件
System.out.println("isSystem is " + dosAttr.isSystem());
System.out.println("isWriteAble is " + Files.isWritable(path));
System.out.println("isExecutable is " + Files.isExecutable(path));
// windows 下不支持
/*posixAttr =
Files.readAttributes(path, PosixFileAttributes.class);
System.out.format("%s %s %s%n",
posixAttr.owner().getName(),
posixAttr.group().getName(),
PosixFilePermissions.toString(posixAttr.permissions()));*/
} catch (IOException e) {
e.printStackTrace();
}
}
// 遍历文件夹
public static void traversalDirectory() {
Path path = Paths.get("F:\\test\\");
final List<File> files = new ArrayList<File>();
SimpleFileVisitor<Path> finder = new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
files.add(file.toFile());
return super.visitFile(file, attrs);
}
};
try {
Files.walkFileTree(path, finder);
} catch (IOException e) {
e.printStackTrace();
}
/*for(File file : files) {
System.out.println(figetName());
}*/
try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
for (Path entry : stream) {
System.out.println(entry);
}
} catch (IOException e) {
e.printStackTrace();
}
}
static final long K = 1024 * 1024;
/**
* 打印文件夹内存占用
* @param store
* @throws IOException
*/
static void printFileStore(FileStore store) throws IOException {
long total = store.getTotalSpace() / K;
long used = (store.getTotalSpace() - store.getUnallocatedSpace()) / K;
long avail = store.getUsableSpace() / K;
String s = store.toString();
if (s.length() > 20) {
System.out.println(s);
s = "";
}
System.out.format("%-20s %12d %12d %12d\n", s, total, used, avail);
}
/**
* 重命名文件
*/
static void renameFile() throws IOException {
Path path = Paths.get("F:\\pp\\python-2.7.11.amd64.msi");
//Path newPath = Paths.get("FileTransfer.imlt");
Files.move(path, path.resolveSibling("README.md"), StandardCopyOption.REPLACE_EXISTING);
System.out.println(111);
}
// 创建文件夹 : Files.createDirectories(sourcePath);
// 删除文件: Files.delete(sourcePath);
public static void main(String[] args) throws IOException {
renameFile();
}
}