Skip to content

Commit fe198be

Browse files
author
turingfly
committed
NIO.2
1 parent 3ced442 commit fe198be

File tree

3 files changed

+210
-0
lines changed

3 files changed

+210
-0
lines changed

Java-8/src/nio2/CreatingPaths.java

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package nio2;
2+
3+
import java.io.File;
4+
import java.net.URI;
5+
import java.net.URISyntaxException;
6+
import java.nio.file.FileSystem;
7+
import java.nio.file.FileSystems;
8+
import java.nio.file.Path;
9+
import java.nio.file.Paths;
10+
11+
/**
12+
*
13+
* @author chengfeili
14+
* Jun 20, 2017 9:31:31 AM
15+
*
16+
* Path is a direct replacement for the legacy java.io.File class, and
17+
* conceptually it contains many of the same properties. For example,
18+
* both File and Path objects may refer to a file or a directory. Both
19+
* also may refer to an absolute path or relative path within the file
20+
* system.
21+
*/
22+
public class CreatingPaths {
23+
public void path() {
24+
Path path1 = Paths.get("/home/zoo");
25+
Path path2 = Paths.get("/", "home", "zoo");
26+
// Use URI values for both local and remote paths
27+
// URIs must reference absolute paths at runtime;
28+
Path path3 = Paths.get("file:///home/zoo");
29+
URI uri = path3.toUri();
30+
try {
31+
FileSystem fileSystem = FileSystems.getFileSystem(new URI("http://www.selikoff.net"));
32+
Path path4 = fileSystem.getPath("duck.txt");
33+
} catch (URISyntaxException e) {
34+
35+
}
36+
// Legacy File Instances
37+
File file = new File("/home/zoo");
38+
Path path5 = file.toPath();
39+
File file2 = path5.toFile();
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package nio2;
2+
3+
import java.io.BufferedReader;
4+
import java.io.BufferedWriter;
5+
import java.io.FileInputStream;
6+
import java.io.FileOutputStream;
7+
import java.io.IOException;
8+
import java.io.InputStream;
9+
import java.io.OutputStream;
10+
import java.nio.charset.Charset;
11+
import java.nio.file.Files;
12+
import java.nio.file.Path;
13+
import java.nio.file.Paths;
14+
import java.util.ArrayList;
15+
import java.util.List;
16+
17+
/**
18+
*
19+
* @author chengfeili
20+
* Jun 20, 2017 9:57:52 PM
21+
*
22+
* Path Object VS Actual File A Path object is not a file but a
23+
* representation of a location with the file system. Most operations
24+
* available in the Path and Paths classes can be accomplished
25+
* regardless of whether the underlying file that the path object
26+
* references actually exists.
27+
*
28+
* Java is fond of singular names for container classes and plural names
29+
* for factory and helper classes. I
30+
*
31+
* the Files class operates on Path instances, not File instances. Keep
32+
* in mind that File belongs to the legacy java.io API, while Files
33+
* belongs to the NIO.2 API.
34+
*/
35+
public class InteractingWithPathsAndFiles {
36+
37+
public void testFile() {
38+
Files.exists(Paths.get("/home/zoo"));
39+
Files.exists(Paths.get("/home/zoo/dog.jpg"));
40+
41+
/**
42+
* The isSameFile() method first checks if the Path objects are equal in
43+
* terms of equal(), and if so, it automatically returns true without
44+
* checking to see if either files exists. If the Path object equals()
45+
* comparison returns false, then it locates each file to which the path
46+
* refers in the file system and determines if they are the same,
47+
* throwing a checked IOException if either file does not exist.
48+
*/
49+
try {
50+
// cobra is a symbolic link to the snake
51+
System.out.println(Files.isSameFile(Paths.get("/user/home/cobra"), Paths.get("/user/home/snake"))); // true
52+
System.out.println(Files.isSameFile(Paths.get("/user/tree/../monkey"), Paths.get("/user/monkey"))); // true
53+
System.out.println(Files.isSameFile(Paths.get("/leaves/./giraffe.exe"), Paths.get("/leaves/giraffe.exe"))); // false
54+
System.out.println(Files.isSameFile(Paths.get("/flamingo/tail.data"), Paths.get("/cardinal/tail.data")));
55+
} catch (IOException e) {
56+
// Handle file I/O exception...
57+
}
58+
59+
/**
60+
*
61+
* The example creates a new directory, field, in the directory /bison,
62+
* assuming /bison exists; or else an exception is thrown. Contrast this
63+
* with the second example that creates the directory green along with
64+
* any of the following parent directories if they do not already exist,
65+
* such as /bison, /bison/field, or /bison/pasture.
66+
*/
67+
try {
68+
Files.createDirectory(Paths.get("/bison/field"));
69+
Files.createDirectories(Paths.get("/bison/field/pasture/green"));
70+
} catch (IOException e) {
71+
// Handle file I/O exception...
72+
}
73+
74+
/**
75+
* Duplicating File Contents with copy()
76+
*
77+
* The copy() method throws the checked IOException, such as when the
78+
* file or directory does not exist or cannot be read. Directory copies
79+
* are shallow rather than deep, meaning that files and sub directories
80+
* within the directory are not copied. T
81+
*/
82+
try {
83+
Files.copy(Paths.get("/panda"), Paths.get("/panda-save"));
84+
85+
Files.copy(Paths.get("/panda/bamboo.txt"), Paths.get("/panda-save/bamboo.txt"));
86+
} catch (IOException e) {
87+
// Handle file I/O exception...
88+
}
89+
90+
try (InputStream is = new FileInputStream("source-data.txt");
91+
OutputStream out = new FileOutputStream("output-data.txt")) {
92+
// Copy stream data to file
93+
Files.copy(is, Paths.get("c:\\mammals\\wolf.txt"));
94+
// Copy file data to stream
95+
Files.copy(Paths.get("c:\\fish\\clown.xsl"), out);
96+
} catch (IOException e) {
97+
// Handle file I/O exception... }
98+
}
99+
// Changing a File Location with move()
100+
try {
101+
Files.move(Paths.get("c:\\zoo"), Paths.get("c:\\zoo-new"));
102+
Files.move(Paths.get("c:\\user\\addresses.txt"), Paths.get("c:\\zoo-new\\addresses.txt"));
103+
} catch (IOException e) {
104+
// Handle file I/O exception...
105+
}
106+
107+
/**
108+
* Removing a File with delete() and deleteIfExists()
109+
*
110+
* The first example deletes the features.txt file in the vulture
111+
* directory, and it throws a NoSuchFileException if the file or
112+
* directory does not exist. The second example deletes the pigeon
113+
* directory assuming it is empty. If the pigeon directory does not
114+
* exist, then the second line will not throw an exception.
115+
*/
116+
try {
117+
Files.delete(Paths.get("/vulture/feathers.txt"));
118+
Files.deleteIfExists(Paths.get("/pigeon"));
119+
} catch (IOException e) {
120+
// Handle file I/O exception...
121+
}
122+
/**
123+
*
124+
* Reading and Writing File Data with newBufferedReader() and
125+
* newBufferedWriter()
126+
*/
127+
128+
Path path = Paths.get("/animals/gopher.txt");
129+
try (BufferedReader reader = Files.newBufferedReader(path, Charset.forName("US-ASCII"))) {
130+
// Read from the stream
131+
String currentLine = null;
132+
while ((currentLine = reader.readLine()) != null)
133+
System.out.println(currentLine);
134+
} catch (IOException e) {
135+
// Handle file I/O exception... }
136+
}
137+
138+
try (BufferedWriter writer = Files.newBufferedWriter(path, Charset.forName("UTF-16"))) {
139+
writer.write("Hello World");
140+
} catch (IOException e) {
141+
// Handle file I/O exception... }
142+
}
143+
144+
/**
145+
* Reading Files with readAllLines()
146+
*/
147+
try {
148+
final List<String> lines = Files.readAllLines(path);
149+
for (String line : lines) {
150+
System.out.println(line);
151+
}
152+
} catch (IOException e) {
153+
// Handle file I/O exception...
154+
}
155+
}
156+
157+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package nio2;
2+
3+
/**
4+
*
5+
* @author chengfeili
6+
* Jun 21, 2017 9:07:47 PM
7+
*
8+
*/
9+
public class UnderstandingFileAttributes {
10+
11+
12+
}

0 commit comments

Comments
 (0)