Skip to content

Commit a437980

Browse files
committed
utf-8
1 parent 50ffc8a commit a437980

3 files changed

Lines changed: 248 additions & 9 deletions

File tree

java-io/src/main/java/com/mkyong/io/file/FilePermission.java

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package com.mkyong.io.file;
22

33
import java.io.IOException;
4-
import java.nio.file.Files;
5-
import java.nio.file.Path;
6-
import java.nio.file.Paths;
7-
import java.nio.file.attribute.DosFileAttributes;
8-
import java.nio.file.attribute.PosixFilePermission;
9-
import java.nio.file.attribute.PosixFilePermissions;
4+
import java.nio.file.*;
5+
import java.nio.file.attribute.*;
106
import java.util.EnumSet;
7+
import java.util.List;
118
import java.util.Set;
129

1310
public class FilePermission {
@@ -16,7 +13,7 @@ public static void main(String[] args) {
1613

1714
try {
1815

19-
Path path = Paths.get("C:\\test\\test4.log");
16+
Path path = Paths.get("c:\\test\\test6.log");
2017
//Path path = Paths.get("/home/mkyong/test/test4.log");
2118

2219
Set<PosixFilePermission> perms = EnumSet.of(
@@ -33,15 +30,59 @@ public static void main(String[] args) {
3330

3431
/*Set<PosixFilePermission> perms =
3532
PosixFilePermissions.fromString("rwxrwxrwx");*/
36-
Files.createFile(path);
33+
if(!Files.exists(path))
34+
Files.createFile(path);
35+
36+
UserPrincipal owner = path.getFileSystem().getUserPrincipalLookupService()
37+
.lookupPrincipalByName("mkyong");
38+
39+
Files.setOwner(path, owner);
3740

3841
/*
42+
File is created and throws UnsupportedOperationException
3943
PosixFilePermissions On Windows
4044
Exception in thread "main" java.lang.UnsupportedOperationException
4145
at java.base/java.nio.file.Files.setPosixFilePermissions(Files.java:2155)
4246
at com.mkyong.io.file.FilePermission.main(FilePermission.java:37)
4347
*/
44-
Files.setPosixFilePermissions(path, PosixFilePermissions.fromString("rwxrwxrwx"));
48+
//Files.setPosixFilePermissions(path, PosixFilePermissions.fromString("rwxrwxrwx"));
49+
50+
//Files.setAttribute(path, "dos:hidden", true);
51+
//Files.setAttribute(path, "dos:readonly", false);
52+
53+
/*FileOwnerAttributeView view = Files.getFileAttributeView(path,
54+
FileOwnerAttributeView.class);
55+
56+
System.out.println(view);
57+
58+
UserPrincipal owner = path.getFileSystem().getUserPrincipalLookupService()
59+
.lookupPrincipalByName("mkyong");
60+
61+
UserPrincipal owner1 = Files.getOwner(path);
62+
System.out.println(owner1.getName());
63+
64+
65+
Files.setAttribute(path, "dos:system", true);
66+
Files.setOwner(path, owner);*/
67+
68+
/*// lookup "joe"
69+
UserPrincipal joe = path.getFileSystem().getUserPrincipalLookupService()
70+
.lookupPrincipalByName("mkyong");
71+
72+
// get view
73+
AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);
74+
75+
// create ACE to give "joe" read access
76+
AclEntry entry = AclEntry.newBuilder()
77+
.setType(AclEntryType.ALLOW)
78+
.setPrincipal(joe)
79+
.setPermissions(AclEntryPermission.READ_DATA, AclEntryPermission.READ_ATTRIBUTES)
80+
.build();
81+
82+
// read ACL, insert ACE, re-write ACL
83+
List<AclEntry> acl = view.getAcl();
84+
acl.add(0, entry); // insert before any DENY entries
85+
view.setAcl(acl);*/
4586

4687
} catch (IOException e) {
4788
e.printStackTrace();
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package com.mkyong.io.howto;
2+
3+
import java.io.*;
4+
import java.nio.charset.StandardCharsets;
5+
import java.nio.file.Files;
6+
import java.nio.file.Path;
7+
import java.nio.file.Paths;
8+
import java.util.List;
9+
import java.util.stream.Stream;
10+
11+
public class UnicodeRead {
12+
13+
public static void main(String[] args) {
14+
15+
String fileName = "c:\\temp\\test.txt";
16+
17+
//readUnicodeJava11(fileName);
18+
readUnicodeBufferedReader(fileName);
19+
//readUnicodeFiles(fileName);
20+
//readUnicodeClassic(fileName);
21+
22+
}
23+
24+
// Java 7 - Files.newBufferedReader(path, StandardCharsets.UTF_8)
25+
// Java 8 - Files.newBufferedReader(path) // default UTF-8
26+
public static void readUnicodeBufferedReader(String fileName) {
27+
28+
Path path = Paths.get(fileName);
29+
30+
// Java 8, default UTF-8
31+
try (BufferedReader reader = Files.newBufferedReader(path)) {
32+
33+
String str;
34+
while ((str = reader.readLine()) != null) {
35+
System.out.println(str);
36+
}
37+
38+
} catch (IOException e) {
39+
e.printStackTrace();
40+
}
41+
42+
}
43+
44+
public static void readUnicodeFiles(String fileName) {
45+
46+
Path path = Paths.get(fileName);
47+
try {
48+
49+
// Java 11
50+
String s = Files.readString(path, StandardCharsets.UTF_8);
51+
System.out.println(s);
52+
53+
// Java 8
54+
List<String> list = Files.readAllLines(path, StandardCharsets.UTF_8);
55+
list.forEach(System.out::println);
56+
57+
// Java 8
58+
Stream<String> lines = Files.lines(path, StandardCharsets.UTF_8);
59+
lines.forEach(System.out::println);
60+
61+
} catch (IOException e) {
62+
e.printStackTrace();
63+
}
64+
65+
}
66+
67+
// Java 11, adds charset to FileReader
68+
public static void readUnicodeJava11(String fileName) {
69+
70+
Path path = Paths.get(fileName);
71+
72+
try (FileReader fr = new FileReader(fileName, StandardCharsets.UTF_8);
73+
BufferedReader reader = new BufferedReader(fr)) {
74+
75+
String str;
76+
while ((str = reader.readLine()) != null) {
77+
System.out.println(str);
78+
}
79+
80+
} catch (IOException e) {
81+
e.printStackTrace();
82+
}
83+
84+
}
85+
86+
public static void readUnicodeClassic(String fileName) {
87+
88+
File file = new File(fileName);
89+
90+
try (FileInputStream fis = new FileInputStream(file);
91+
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
92+
BufferedReader reader = new BufferedReader(isr)
93+
) {
94+
95+
String str;
96+
while ((str = reader.readLine()) != null) {
97+
System.out.println(str);
98+
}
99+
100+
} catch (IOException e) {
101+
e.printStackTrace();
102+
}
103+
104+
}
105+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.mkyong.io.howto;
2+
3+
import java.io.*;
4+
import java.nio.charset.StandardCharsets;
5+
import java.nio.file.Files;
6+
import java.nio.file.Path;
7+
import java.nio.file.Paths;
8+
import java.util.Arrays;
9+
import java.util.List;
10+
11+
public class UnicodeWrite {
12+
13+
public static void main(String[] args) {
14+
15+
String fileName = "c:\\temp\\test.txt";
16+
List<String> lines = Arrays.asList("line 1", "line 2", "line 3", "你好,世界");
17+
18+
writeUnicodeJava7(fileName, lines);
19+
//writeUnicodeJava8(fileName, lines);
20+
//writeUnicodeJava11(fileName, lines);
21+
//writeUnicodeClassic(fileName, lines);
22+
23+
System.out.println("Done");
24+
}
25+
26+
// in the old days
27+
public static void writeUnicodeClassic(String fileName, List<String> lines) {
28+
29+
File file = new File(fileName);
30+
31+
try (FileOutputStream fos = new FileOutputStream(file);
32+
OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
33+
BufferedWriter writer = new BufferedWriter(osw)
34+
) {
35+
36+
for (String line : lines) {
37+
writer.append(line);
38+
writer.newLine();
39+
}
40+
41+
} catch (IOException e) {
42+
e.printStackTrace();
43+
}
44+
45+
}
46+
47+
public static void writeUnicodeJava7(String fileName, List<String> lines) {
48+
49+
Path path = Paths.get(fileName);
50+
try {
51+
Files.write(path, lines, StandardCharsets.UTF_8);
52+
} catch (IOException e) {
53+
e.printStackTrace();
54+
}
55+
56+
}
57+
58+
// Java 8 - Files.newBufferedWriter(path) - default UTF-8
59+
public static void writeUnicodeJava8(String fileName, List<String> lines) {
60+
61+
Path path = Paths.get(fileName);
62+
63+
try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
64+
65+
for (String line : lines) {
66+
writer.append(line);
67+
writer.newLine();
68+
}
69+
70+
} catch (IOException e) {
71+
e.printStackTrace();
72+
}
73+
74+
}
75+
76+
// Java 11 adds Charset to FileWriter
77+
public static void writeUnicodeJava11(String fileName, List<String> lines) {
78+
79+
try (FileWriter fw = new FileWriter(new File(fileName), StandardCharsets.UTF_8);
80+
BufferedWriter writer = new BufferedWriter(fw)) {
81+
82+
for (String line : lines) {
83+
writer.append(line);
84+
writer.newLine();
85+
}
86+
87+
} catch (IOException e) {
88+
e.printStackTrace();
89+
}
90+
91+
}
92+
93+
}

0 commit comments

Comments
 (0)