You are on page 1of 16

Nio2

Java SE
Contents

• Overview

• File System

• Directory System

• Inputs & Outputs


Overview
• Java SE 7 မတiuင&မ'(အထi Java ဘ,သ,ရပ&တ0င& File 1'င&2 Directory
မ3,4အ,4 File အ,4 အသu546ပu၍၊ Input Output မ3,4အတ0က& I/O အ,4
အသu546ပuခ<2

• သiuရ,တ0င& ဖiuင&၏ Metadata မ3,46ဖစ&Aကeသ,၊ ဖiuင&၏ ပiuင&Cင&၊ ဖiuင&အ,4


eရ4သ,4ခ3iန&၊ မ3,4ကiu e6ပ,င&4လည&4လiuသG2်အခI၊ Symbolic link မ3,4
ကiu အသu546ပuလiuသG2်အခI၊ Directory မ3,4ကiu eစ,င2်AကG2်လiuသG2်
အခIမ3,4တ0င& java.io.File တစ&ခuတည&46ဖင2် 6ပuလuပ&1iuင&စ0မ&4မCieပ

• ထiuအခက&အခ<မ3,4ကiu e6ဖCင&4ရန&အတ0က& JSR 203 6ဖင2် NIO2 ကiu 6ဖ


G&2စ0က&လ,ခ<2ပIသည&
Nio2
FileSystem
• FileSystem ကလပ&စ&သည& အမည&ပIအတiuင&4 ဖiuင&စစJတမ&ကiu ကiuယ&စ,46ပu
eသ, Class တစ&ခu6ဖစ&ပIသည&။

• FileSystem သည& လက&Ci OS အတ0င&4Ci File System မ3,4သ,မက၊ jar


သiuမဟuတ& zip ဖiuင&မ3,4ကiuလည&4 Virtual File System  အeနန'င&2 အသu546ပu
1iuင&ပIသည&။

• တဖန& FileSystem Object ကiu အသစ&eမ04ဖ0,4eစရ,တ0င& အသu546ပu


1iuင&သည&မ', FileSystems Factory Class ပင&6ဖစ&၏။

• Default FileSystem Object ကiu eအ,က&ပIအတiuင&4 eရ4သ,4 1iuင&ပIသည&။



FileSystem fs = FileSystems.getDefault();
Path Interface
• Path Interface သည& လက&Ci File System အတ0င&4Ci File
1'င&2 Directory မ3,4အ,4 ကiuယ&စ,46ပuပIသည&

• Path ၏ instance မ3,4ကiu Create ရ,တ0င&


FileSystem#getPath လuပ&eဆ,င&ခ3က&ကiu၎င&4၊ Paths#get
လuပ&eဆ,င&ခ3က&ကiu၎င&4 အသu546ပu1iuင&ပIသည&

• Path မ' File အ,4 e6ပ,င&4လည&4လiuပIက Path#toFile


အ,4၎င&4၊ File မ' Path သiue6ပ,င&4လည&4လiuပIက
File#toPath method အ,4 အသu546ပu1iuင&
Creating Path Object
// Path with only one parameter
Path path1 = fs.getPath("c:\\tmp\\fpone.txt");
System.out.println(path1);

// Path with varargs


Path path2 = fs.getPath("c:", "tmp","sample","ftwo.txt");
System.out.println(path2);

// Path made by Paths


Path path3 = Paths.get("c:\\tmp\\fthree.txt");
System.out.println(path3);
Directory System
• NIO2 တ0င& Directory  မ3,4ကiuအသu546ပu1iuင&ရန& DirectorySystem ကiu 6ပင&ဆင&ထ,4၏

• Path အင&တ,eဖစ& 6ဖင2်လည&4 Directory မ3,4ကiu ကiuယ&စ,46ပu အသu546ပu1iuင&


eသ,&လည&4 File 1'င&2 Directory တiu၏ တPည(eသ, အခ3က&အလက&မ3,41'င2် အသu546ပuပu5
တiuကiuသ, အသu546ပu1iuင&၏

• Directory အတ0င&4Ci File 1'င&2 Subdirectory မ3,4အ,4 eခQယPအသu546ပu1iuင&6ခင&4 မCiခ<2ပI

• အဆiuပI အခ3က&အလက&မ3,4ကiu အသu546ပu1iuင&ရန&မ', DirectorySystem Interface အ,4


အသu546ပuရန& လiuအပ&

• DirectorySystem အ,4 Files Utility Class ၏ newDirectorySystem method


အ,4 အသu546ပu 1iuင&ပIသည&
Searching Files and
Directory
public void showChildren(Path path, String bias)
throws IOException {
System.out.println(bias + path.getFileName());
if(Files.isDirectory(path,
LinkOption.NOFOLLOW_LINKS)) {

DirectoryStream<Path> directory =
Files.newDirectoryStream(path);
for(Path p : directory)
this.showChildren(p, bias + BIAS);
}
}
Input & Output
• Java တ0င& ဖiuင&မ3,4ကiu ဖတ&ယPရ,တ0င&၎င&4 eရ4သ,4ရ,တ0င&၎င&4၊ Stream
မ3,4၊ Reader Writer မ3,41'င&2 Channel မ3,4ကiu အသu546ပu1iuင&ပIသည&

• NIO2 ၌ java.io.FileInputStream 1'င&2 java.io.FileReader အစCiသ


G&2ကလပ&စ&မ3,41'င&2 အဆင&2တP ကလပ&စ&မ3,4ကiu 6ပင&ဆင&ထ,46ခင&4မCiပI

• သiuရ,တ0င& Files ကလပ&စ&ကiu အသu546ပu၍ FileInputStream မ3,4


FileReader မ3,4ကiu eခQယP1iuင&ပIသည&

• eသ4ငယ&eသ, File မ3,4ဆiuပIက Files Class မ'တiuက&Siuက& Input


Output 6ပuလuပ&1iuင&ပIသည&
StandardOpenOptions
• Files မ' ဖiuင&မ3,4ကiu ဆက&သ0ယ&ရ,တ0င& မည&သG&2 ပu5စ56ဖင&2 ဆက&သ0ယ&မည&ဆiuသည&ကiu
သတ&မ'တ&ရန& လiuအပ&ပIသည&

• ဤသiuသက&မ',ရ,တ0င& OpenOption Enum ကiu အသu546ပu၍ 1'စ&သက&သလiu အသu546ပu1iuင&


ပIသည&။

APPEND READ
CREATE SPARSE
CREATE_NEW SYNC
DELETE_ON_CLOSE TRUNCATE_EXISTING
DSYNC WRITE
I/0 Stream
public static void doStreamSample(Path path) {
try (InputStream input = Files.newInputStream(path);
OutputStream out = Files.newOutputStream(
path, StandardOpenOption.APPEND)) {

// INPUT OUTPUT Process

} catch (IOException e) {
e.printStackTrace();
}
}
Reader & Writer
public static void doReaderSample(Path path) {

try (BufferedReader input = Files.newBufferedReader(


path, Charset.forName("utf-8"));
BufferedWriter out1 = Files.newBufferedWriter(
path, Charset.forName("utf-8"),
StandardOpenOption.APPEND)) {

// INPUT OUTPUT Process

} catch (IOException e) {
e.printStackTrace();
}
}
Byte Channel
public static void doSeekChennelSample(Path path) {
try (SeekableByteChannel chennel =
Files.newByteChannel(path);
SeekableByteChannel writeChannel =
Files.newByteChannel(path,
StandardOpenOption.WRITE,
StandardOpenOption.APPEND)) {

// INPUT OUTPUT Process

} catch (IOException e) {
e.printStackTrace();
}
}
File Channel
public static void doFileChannelSample(Path path) {

try (FileChannel channel = FileChannel.open(path);


FileChannel wtChannel = FileChannel.open(path,
StandardOpenOption.WRITE)) {

// INPUT OUTPUT Process

} catch (IOException e) {
e.printStackTrace();
}
}
Using small File
public static void easyReadSample(Path path) throws IOException {

// Read Bytes
byte [] bytes = Files.readAllBytes(path);

// Read Lines
List<String> lines = Files.readAllLines(path, Charset.defaultCharset());

// Write bytes
Files.write(path, bytes, StandardOpenOption.APPEND);

// Write Text Lines


Files.write(path, lines, Charset.forName("utf-8"),
StandardOpenOption.APPEND);
}

You might also like