SlideShare a Scribd company logo
1 of 41
Download to read offline
File dan Directory
Prepared by Viska Mutiawani
1 viska@unsyiah.ac.id
Subtopik File dan Directory
 File pada java.io
 Java nio
 Path
 Files
2 viska@unsyiah.ac.id
File pada java.io
3 viska@unsyiah.ac.id
Class File
 Class File ada di bawah package java.io
 Merupakan representasi abstrak terhadap file dan
directory pathname.
 Ada 4 constructor pada class File, 2 diantaranya:
 File file1 = new File(“data.txt”);
 File file2 = new File(“C:java”);
 Dan ada banyak method yang bisa dilihat di Java
API
4 viska@unsyiah.ac.id
Input/output (I/O)
import java.io.*;
 Cipta objek File dan anda dapat mendapatkan infor
mengenai file tersebut.
 (Bukan bermakna mencipta file baru pada harddisk)
File f = new File("example.txt");
if (f.exists() && f.length() > 1000) {
f.delete();
} Method name Description
canRead() returns whether file is able to be read
delete() removes file from disk
exists() whether this file exists on disk
getName() returns file's name
length() returns number of bytes in file
renameTo(file) changes name of file
5 viska@unsyiah.ac.id
Membaca file
 Cara mudah membaca File , anda dapat
mengirimkan objek File ke Scanner.
Scanner name = new Scanner(new File("file name"));
 Example:
File file = new File("mydata.txt");
Scanner input = new Scanner(file);
 or (shorter):
Scanner input = new Scanner(new
File("mydata.txt"));
6 viska@unsyiah.ac.id
File paths
 absolute path: path hingga ke folder paling atas
"/"
C:/Documents/smith/hw6/input/data.csv
 Windows can also use backslashes to separate folders.
 relative path: path tergantung dari current directory
names.dat
input/kinglear.txt
Scanner input = new Scanner(new
File("data/readme.txt"));
If our program is in H:/hw6 ,
Scanner will look for H:/hw6/data/readme.txt
7 viska@unsyiah.ac.id
Compiler error w/ files
import java.io.*; // for File
import java.util.*; // for Scanner
public class ReadFile {
public static void main(String[] args) {
Scanner input = new Scanner(new
File("data.txt"));
String text = input.next();
System.out.println(text);
}
}
 The program fails to compile with the following error:
ReadFile.java:6: unreported exception
java.io.FileNotFoundException;
must be caught or declared to be thrown
Scanner input = new Scanner(new File("data.txt"));
^
8 viska@unsyiah.ac.id
Exceptions
 exception: Objek yang mewakili error runtime.
 dividing an integer by 0
 calling substring on a String and passing too large an index
 trying to read the wrong type of value from a Scanner
 trying to read a file that does not exist
 Program yang ada error akan melempar/ "throws“ exception.
 Kita dapat menangkap/ "catch" (handle or fix) exception.
 checked exception: Error yang harus dihandle oleh
program kita (jika tidak, kompilasi tidak berhasil).
 Kita harus menspesifikkan bagaimana program menghandle
kegagalan proses I/O.
9 viska@unsyiah.ac.id
The throws clause
 throws clause: Kata kunci pada method yang
menyatakan bahwa ada unsur dalam method
menghasilkan exception namun tidak ditangani.
 Syntax:
public static type name(params) throws type {
 Example:
public class ReadFile {
public static void main(String[] args)
throws FileNotFoundException {
 Seperti mengatakan, “Saya umumkan bahwa method ini akan
menghasilkan exception dan saya menerima konsekuensinya."
10 viska@unsyiah.ac.id
Input tokens
 token: Unit dari input, dipisahkan oleh spasi.
 Objek Scanner membagi isi file menjadi token.
 Contoh input file berikut:
23 3.14
"John Smith"
Objek Scanner dapat menginterpretasi menjadi tipe data
berikut:
Token Type(s)
23 int, double, String
3.14 double, String
"John String
Smith" String
11 viska@unsyiah.ac.id
Files and input cursor
 Andai ada file weather.txt yang berisi:
16.2 23.5
19.1 7.4 22.8
18.5 -1.8 14.9
 Objek Scanner menampilkan input sebagai suatu
stream of characters:
16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n
^
 input cursor: posisi sekarang pembacaan oleh
Scanner.
12 viska@unsyiah.ac.id
Consuming tokens
 consuming input: Baca input dan pindahkan cursor.
 Calling nextInt etc. moves the cursor past the current token.
16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n
^
double d = input.nextDouble(); // 16.2
16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n
^
String s = input.next(); // "23.5"
16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n
^
13 viska@unsyiah.ac.id
Scanner tests for valid input
 These methods of the Scanner do not consume input;
they just give information about what the next token will be.
 Useful to see what input is coming, and to avoid crashes.
 These methods can be used with a console Scanner, as well.
 When called on the console, they sometimes pause waiting for input.
Method Description
hasNext() returns true if there is a next token
hasNextInt() returns true if there is a next token
and it can be read as an int
hasNextDouble() returns true if there is a next token
and it can be read as a double
14 viska@unsyiah.ac.id
Using hasNext methods
 Avoiding type mismatches:
Scanner console = new Scanner(System.in);
System.out.print("How old are you? ");
if (console.hasNextInt()) {
int age = console.nextInt(); // will not crash!
System.out.println("Wow, " + age + " is old!");
} else {
System.out.println("You didn't type an integer.");
}
 Avoiding reading past the end of a file:
Scanner input = new Scanner(new File("example.txt"));
if (input.hasNext()) {
String token = input.next(); // will not crash!
System.out.println("next token is " + token);
}
15 viska@unsyiah.ac.id
Copy file
File f1 = new File("test1.txt");
File f2 = new File("target.txt");
InputStream in = new FileInputStream(f1);
OutputStream out = new FileOutputStream(f2);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
System.out.println("File berhasil dicopy!");
16 viska@unsyiah.ac.id
Java NIO
17 viska@unsyiah.ac.id
java.nio
 New input/output (NIO) pertama sekali
diperkenalkan pada J2SE 4.
 NIO menyediakan akses cepat dan block-oriented
untuk proses I/O.
 Java.io vs java.nio
 Stream vs block
18 viska@unsyiah.ac.id
Stream vs Block
 Stream-oriented I/O
 Mengurus data satu byte pada satu waktu. Suatu input
stream akan menghasilkan satu byte data dan output
stream akan membaca satu byte data. Walau demikian,
sangatlah mudah dan sederhana dalam melakukan filter
pada data stream, namun stream I/O lebih lambat.
 Block-oriented I/O
 Mengurus data dalam block. Setiap operasi menghasilkan
dan membaca satu blok data pada satu waktu. Hasilnya
proses menjadi lebih cepat, namun proses filter menjadi
lebih sukar.
19 viska@unsyiah.ac.id
Path
viska@unsyiah.ac.id20
Sistem File
 Sistem file akan menyimpan
dan mengorganisasi
berbagai file media sehingga
mudah untuk dicapai.
 Umumnya disusun menjadi
bentuk tree/pohon (struktur
hirarki)
 Pada node akar, akan ada
file dan directory, kemudian
directory tadi akan
mengandung file dan
directory, kemudian directory
akan mengandung file dan
directory lagi, … dst.
21 viska@unsyiah.ac.id
Apa itu path?
 Setiap file dan directory pasti memiliki path/laluan
pada sistem file, yang bermula dari node akar.
 Contoh pada gambar sebelumnya:
 /home/sally/statusReport pada Solaris OS
 C:homesallystatusReport pada Windows
 Karakter yang digunakan untuk memisahkan
directory disebut delimiter. Dan bersifat spesifik
terhadap OS.
 Pada Solaris OS: /
 Pada Windows OS: 
22 viska@unsyiah.ac.id
Class Paths dan Interface Path
 Diperkenalkan pada J2SE 7 dan ada dalam package
java.nio.file
 Merupakan representasi dari path pada sistem file.
 Objek Path mengandung nama file dan directory
yang akan membentuk path sehingga dapat
digunakan untuk memeriksa, melokasikan dan
memanipulasi file.
 Path akan mengikuti sistem file dari OS.
 Objek Path dapat di-append, extract dan
dibandingkan dengan path lain.
23 viska@unsyiah.ac.id
Cipta objek Path
 Mencipta objek Path dengan menggunakan method
get
 Path p1 = Paths.get("/tmp/foo");
 Path p2 = Paths.get(args[0]);
 Path p3 =
Paths.get(URI.create("file:///Users/joe/FileTest.java"));
 Bentuk ringkas dari:
 Path p4 =
FileSystems.getDefault().getPath("/users/sally");
24 viska@unsyiah.ac.id
Mencapai informasi dari Path
 Setiap nama directory dapat diakses dengan index.
 Direktori paling atas: index 0
 Direktori paling bawah: index n-1 (dimana n merupakan
jumlah direktori pada Path)
25 viska@unsyiah.ac.id
Contoh penggunaan absolute Path
viska@unsyiah.ac.id26
Contoh penggunaan relative path
viska@unsyiah.ac.id27
Gabung dua Path
 Dua path dapat digabungkan menggunakan method
resolve.
viska@unsyiah.ac.id28
Membandingkan dua Path
 Path mensupport method equals, sehingga dua path
dapat dibandingkan dengan method tersebut.
 Juga memiliki method startsWith dan endsWith
untuk mengecek awalan dan akhiran dari path.
viska@unsyiah.ac.id29
Fitur lain dari Path
 Implements Iterable sehingga bisa menggunakan
method iterator untuk menjejaki unsur nama dalam
path satu per satu.
 Implements Comparable sehingga bisa
menggunakan method compareTo, yang dapat
dipakai untuk sorting
 Objek Path juga dapat disimpan dalam Collection.
viska@unsyiah.ac.id30
Files
viska@unsyiah.ac.id31
Class Files
 Class Files merupakan bagian penting dari package
java.nio.file.
 Class ini menyediakan static method untuk
melakukan proses membaca, menulis dan
memanipulasi file dan directory.
 Class ini merupakan bagian dari new I/O (NIO) maka
menyediakan method untuk memproses data secara
block.
 Sehingga operasi menjadi lebih cepat dan sederhana.
viska@unsyiah.ac.id32
Baca Files
 Baca seluruh isi Files
 byte[] bytes = Files.readAllBytes(path);
 Jika ingin diubah ke String, tinggal tambahkan:
 String content = new String(bytes, charset);
 Baca file terbagi menjadi per baris
 List<String> lines = Files.readAllLines(path, charset);
 Method-method di atas berguna untuk file teks yang
tidak terlalu panjang.
viska@unsyiah.ac.id33
Tulis Files
 Tulis string ke Files
 Files.write(path, content.getBytes(charset));
 Tambah string ke Files yang telah ada isi, di bagian
ujungnya
 Files.write(path, content.getBytes(charset),
StandardOpenOption.APPEND);
 Tambah collection baris ke Files
 Files.write(path, lines);
viska@unsyiah.ac.id34
Baca dan Tulis Files yang lebih besar
 Jika Files yang dibaca itu besar ataupun berupa
binary, maka kita dapat memanfaatkan streams atau
reader/writer
InputStream in = Files.newInputStream(path);
OutputStream out = Files.newOutputStream(path);
Reader in = Files.newBufferedReader(path, charset);
Writer out = Files.newBufferedWriter(path, charset);
 Method di atas mempermudah kerja kita, karena
tidak perlu memakai FileInputStream,
FileOutputStream, BufferedReader, or
BufferedWriter.
viska@unsyiah.ac.id35
Copy, pindah, hapus Files
 Mengcopy satu file
 Files.copy(fromPath, toPath);
 Pindah satu file (maksudnya copy file dan hapus
original)
 Files.move(fromPath, toPath);
 Dengan 2 method di atas, proses copy dan move
akan gagal jika target file telah wujud. Kalau ingin
mereplace file target dan copy seluruh atribut file:
 Files.copy(fromPath, toPath,
StandardCopyOption.REPLACE_EXISTING,
StandardCopyOption.COPY_ATTRIBUTES);
viska@unsyiah.ac.id36
Copy, pindah, hapus Files
 Untuk move untuk memastikan berhasil akan
dihapus, namun jika tidak file original masih ada
 Files.move(fromPath, toPath,
StandardCopyOption.ATOMIC_MOVE);
 Hapus file
 Files.delete(path);
 Method delete akan menghasilkan exception jika tidak
wujuh, jadi cara lebih aman:
 boolean deleted = Files.deleteIfExists(path);
 Method delete juga dapat digunakan untuk
menghapus directory.
viska@unsyiah.ac.id37
Create Files dan Directories
 Buat satu directory baru
 Files.createDirectory(path);
 Dengan method di atas, semua unsur dari path harus
wujud kecuali unsur directory terakhir (yang ingin dibuat)
 Buat intermediate directory
 Files.createDirectories(path);
 Buat file kosong
 Files.createFile(path);
 Temporary file dan directory
 Path newPath = Files.createTempFile(dir, prefix, suffix);
Path newPath = Files.createTempFile(prefix, suffix);
Path newPath = Files.createTempDirectory(dir, prefix);
Path newPath = Files.createTempDirectory(prefix);
viska@unsyiah.ac.id38
Mendapatkan informasi dari Files
 Method berikut akan mengembalikan boolean
 exists
 isHidden
 isReadable, isWritable, isExecutable
 isRegularFile, isDirectory, isSymbolicLink
 Jumlah bytes dalam file
 long fileSize = Files.size(path);
 getOwner yang mengembalikan UserPrincipal
 readAttributes yang mengembalikan
BasicFileAttributes
viska@unsyiah.ac.id39
Iterating over the Files in a Directory
 Pada class File versi lama, proses membaca file di
directory disimpan dalam array. Namun hal ini bisa
menjadi lambat jika file sangat banyak
 Pada NIO, kita dapat pakai DirectoryStream yang
implement iterable sehingga kita bisa pakai Iterator.
 try (DirectoryStream<Path> entries =
Files.newDirectoryStream(dir))
{
for (Path entry : entries)
Process entries
}
 Blok try-with-resources memastikan DirectoryStream ditutup
sesudah digunakan.
 Dapat memfilter dengan glob
 try (DirectoryStream<Path> entries = Files.newDirectoryStream(dir,
"*.java"))
viska@unsyiah.ac.id40
Glob pattern
 Glob pattern merupakan pola string yang dipadankan
dengan string lain, seperti directory atau nama file.
viska@unsyiah.ac.id41

More Related Content

Similar to FILE_DIR

Jeni Intro2 Bab05 Aplikasi Berbasis Teks
Jeni Intro2 Bab05 Aplikasi Berbasis TeksJeni Intro2 Bab05 Aplikasi Berbasis Teks
Jeni Intro2 Bab05 Aplikasi Berbasis TeksIndividual Consultants
 
01.06 Java SE_getting user input
01.06 Java SE_getting user input01.06 Java SE_getting user input
01.06 Java SE_getting user inputJefri Fahrian
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2rahmi wahyuni
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekimam arifin
 
Chapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptChapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptTashidFafri1
 
10_STREAM DAN FILE.pdf
10_STREAM DAN FILE.pdf10_STREAM DAN FILE.pdf
10_STREAM DAN FILE.pdfJurnal IT
 
TM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptxTM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptxAdityaWahyuR2
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Ekha Cahya Nugraha
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriSyarif Fudin
 
Tugas 4 rekayasa web
Tugas 4   rekayasa webTugas 4   rekayasa web
Tugas 4 rekayasa webfaisalawai
 
Laporan praktikum modul vii
Laporan praktikum modul viiLaporan praktikum modul vii
Laporan praktikum modul viiDevi Apriansyah
 
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekLaporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekKuncara Laksana
 
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptxPEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptxBBXSQUAD
 

Similar to FILE_DIR (20)

Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)
 
Jeni Intro2 Bab12 Stream Io Lanjut
Jeni Intro2 Bab12 Stream Io LanjutJeni Intro2 Bab12 Stream Io Lanjut
Jeni Intro2 Bab12 Stream Io Lanjut
 
Jeni Intro2 Bab05 Aplikasi Berbasis Teks
Jeni Intro2 Bab05 Aplikasi Berbasis TeksJeni Intro2 Bab05 Aplikasi Berbasis Teks
Jeni Intro2 Bab05 Aplikasi Berbasis Teks
 
Java
JavaJava
Java
 
01.06 Java SE_getting user input
01.06 Java SE_getting user input01.06 Java SE_getting user input
01.06 Java SE_getting user input
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objek
 
Chapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.pptChapter 10. Operasi IO.ppt
Chapter 10. Operasi IO.ppt
 
4 Adt
4 Adt4 Adt
4 Adt
 
10_STREAM DAN FILE.pdf
10_STREAM DAN FILE.pdf10_STREAM DAN FILE.pdf
10_STREAM DAN FILE.pdf
 
PBO Pratikum 1
PBO Pratikum 1PBO Pratikum 1
PBO Pratikum 1
 
TM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptxTM-4-5-6 SQLite Database.pptx
TM-4-5-6 SQLite Database.pptx
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13Laporan praktikum Algoritma dan Pemrograman pertemuan 13
Laporan praktikum Algoritma dan Pemrograman pertemuan 13
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajri
 
Tugas 4 rekayasa web
Tugas 4   rekayasa webTugas 4   rekayasa web
Tugas 4 rekayasa web
 
Pengenalan Pemrograman Java
Pengenalan Pemrograman JavaPengenalan Pemrograman Java
Pengenalan Pemrograman Java
 
Prak 1
Prak 1Prak 1
Prak 1
 
Laporan praktikum modul vii
Laporan praktikum modul viiLaporan praktikum modul vii
Laporan praktikum modul vii
 
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekLaporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
 
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptxPEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
 

More from Fajar Baskoro

Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxFajar Baskoro
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterFajar Baskoro
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanFajar Baskoro
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUSFajar Baskoro
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxFajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdfFajar Baskoro
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptxFajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptxFajar Baskoro
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxFajar Baskoro
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimFajar Baskoro
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahFajar Baskoro
 
Meraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remajaMeraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remajaFajar Baskoro
 
Membangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan AppsheetMembangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan AppsheetFajar Baskoro
 
Transition education to employment.pdf
Transition education to employment.pdfTransition education to employment.pdf
Transition education to employment.pdfFajar Baskoro
 

More from Fajar Baskoro (20)

Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptx
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarter
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUS
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptx
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptx
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptx
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi Kaltim
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolah
 
Meraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remajaMeraih Peluang di Gig Economy yang cocok bagi remaja
Meraih Peluang di Gig Economy yang cocok bagi remaja
 
Membangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan AppsheetMembangun aplikasi mobile dengan Appsheet
Membangun aplikasi mobile dengan Appsheet
 
epl1.pdf
epl1.pdfepl1.pdf
epl1.pdf
 
user.docx
user.docxuser.docx
user.docx
 
Dtmart.pptx
Dtmart.pptxDtmart.pptx
Dtmart.pptx
 
DualTrack-2023.pptx
DualTrack-2023.pptxDualTrack-2023.pptx
DualTrack-2023.pptx
 
BADGE.pptx
BADGE.pptxBADGE.pptx
BADGE.pptx
 
womenatwork.pdf
womenatwork.pdfwomenatwork.pdf
womenatwork.pdf
 
Transition education to employment.pdf
Transition education to employment.pdfTransition education to employment.pdf
Transition education to employment.pdf
 

Recently uploaded

MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASKurniawan Dirham
 
Model Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsModel Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsAdePutraTunggali
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxawaldarmawan3
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...MarwanAnugrah
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxsudianaade137
 
Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)3HerisaSintia
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggeraksupriadi611
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxmtsmampunbarub4
 
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxmawan5982
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxherisriwahyuni
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxWirionSembiring2
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxarnisariningsih98
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdftsaniasalftn18
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxRezaWahyuni6
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxFuzaAnggriana
 
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfChrodtianTian
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxDwiYuniarti14
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 

Recently uploaded (20)

MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
 
Model Manajemen Strategi Public Relations
Model Manajemen Strategi Public RelationsModel Manajemen Strategi Public Relations
Model Manajemen Strategi Public Relations
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
 
Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggerak
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
 
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docxTugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
Tugas 1 pembaruan dlm pembelajaran jawaban tugas tuton 1.docx
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
 
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptxMODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
MODUL 2 BAHASA INDONESIA-KELOMPOK 1.pptx
 
Kelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdfKelompok 2 Karakteristik Negara Nigeria.pdf
Kelompok 2 Karakteristik Negara Nigeria.pdf
 
Materi Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptxMateri Pertemuan Materi Pertemuan 7.pptx
Materi Pertemuan Materi Pertemuan 7.pptx
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
 
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdfLAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
LAPORAN PKP KESELURUHAN BAB 1-5 NURUL HUSNA.pdf
 
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptxKesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
Kesebangunan Segitiga matematika kelas 7 kurikulum merdeka.pptx
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 

FILE_DIR

  • 1. File dan Directory Prepared by Viska Mutiawani 1 viska@unsyiah.ac.id
  • 2. Subtopik File dan Directory  File pada java.io  Java nio  Path  Files 2 viska@unsyiah.ac.id
  • 3. File pada java.io 3 viska@unsyiah.ac.id
  • 4. Class File  Class File ada di bawah package java.io  Merupakan representasi abstrak terhadap file dan directory pathname.  Ada 4 constructor pada class File, 2 diantaranya:  File file1 = new File(“data.txt”);  File file2 = new File(“C:java”);  Dan ada banyak method yang bisa dilihat di Java API 4 viska@unsyiah.ac.id
  • 5. Input/output (I/O) import java.io.*;  Cipta objek File dan anda dapat mendapatkan infor mengenai file tersebut.  (Bukan bermakna mencipta file baru pada harddisk) File f = new File("example.txt"); if (f.exists() && f.length() > 1000) { f.delete(); } Method name Description canRead() returns whether file is able to be read delete() removes file from disk exists() whether this file exists on disk getName() returns file's name length() returns number of bytes in file renameTo(file) changes name of file 5 viska@unsyiah.ac.id
  • 6. Membaca file  Cara mudah membaca File , anda dapat mengirimkan objek File ke Scanner. Scanner name = new Scanner(new File("file name"));  Example: File file = new File("mydata.txt"); Scanner input = new Scanner(file);  or (shorter): Scanner input = new Scanner(new File("mydata.txt")); 6 viska@unsyiah.ac.id
  • 7. File paths  absolute path: path hingga ke folder paling atas "/" C:/Documents/smith/hw6/input/data.csv  Windows can also use backslashes to separate folders.  relative path: path tergantung dari current directory names.dat input/kinglear.txt Scanner input = new Scanner(new File("data/readme.txt")); If our program is in H:/hw6 , Scanner will look for H:/hw6/data/readme.txt 7 viska@unsyiah.ac.id
  • 8. Compiler error w/ files import java.io.*; // for File import java.util.*; // for Scanner public class ReadFile { public static void main(String[] args) { Scanner input = new Scanner(new File("data.txt")); String text = input.next(); System.out.println(text); } }  The program fails to compile with the following error: ReadFile.java:6: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown Scanner input = new Scanner(new File("data.txt")); ^ 8 viska@unsyiah.ac.id
  • 9. Exceptions  exception: Objek yang mewakili error runtime.  dividing an integer by 0  calling substring on a String and passing too large an index  trying to read the wrong type of value from a Scanner  trying to read a file that does not exist  Program yang ada error akan melempar/ "throws“ exception.  Kita dapat menangkap/ "catch" (handle or fix) exception.  checked exception: Error yang harus dihandle oleh program kita (jika tidak, kompilasi tidak berhasil).  Kita harus menspesifikkan bagaimana program menghandle kegagalan proses I/O. 9 viska@unsyiah.ac.id
  • 10. The throws clause  throws clause: Kata kunci pada method yang menyatakan bahwa ada unsur dalam method menghasilkan exception namun tidak ditangani.  Syntax: public static type name(params) throws type {  Example: public class ReadFile { public static void main(String[] args) throws FileNotFoundException {  Seperti mengatakan, “Saya umumkan bahwa method ini akan menghasilkan exception dan saya menerima konsekuensinya." 10 viska@unsyiah.ac.id
  • 11. Input tokens  token: Unit dari input, dipisahkan oleh spasi.  Objek Scanner membagi isi file menjadi token.  Contoh input file berikut: 23 3.14 "John Smith" Objek Scanner dapat menginterpretasi menjadi tipe data berikut: Token Type(s) 23 int, double, String 3.14 double, String "John String Smith" String 11 viska@unsyiah.ac.id
  • 12. Files and input cursor  Andai ada file weather.txt yang berisi: 16.2 23.5 19.1 7.4 22.8 18.5 -1.8 14.9  Objek Scanner menampilkan input sebagai suatu stream of characters: 16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n ^  input cursor: posisi sekarang pembacaan oleh Scanner. 12 viska@unsyiah.ac.id
  • 13. Consuming tokens  consuming input: Baca input dan pindahkan cursor.  Calling nextInt etc. moves the cursor past the current token. 16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n ^ double d = input.nextDouble(); // 16.2 16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n ^ String s = input.next(); // "23.5" 16.2 23.5n19.1 7.4 22.8nn18.5 -1.8 14.9n ^ 13 viska@unsyiah.ac.id
  • 14. Scanner tests for valid input  These methods of the Scanner do not consume input; they just give information about what the next token will be.  Useful to see what input is coming, and to avoid crashes.  These methods can be used with a console Scanner, as well.  When called on the console, they sometimes pause waiting for input. Method Description hasNext() returns true if there is a next token hasNextInt() returns true if there is a next token and it can be read as an int hasNextDouble() returns true if there is a next token and it can be read as a double 14 viska@unsyiah.ac.id
  • 15. Using hasNext methods  Avoiding type mismatches: Scanner console = new Scanner(System.in); System.out.print("How old are you? "); if (console.hasNextInt()) { int age = console.nextInt(); // will not crash! System.out.println("Wow, " + age + " is old!"); } else { System.out.println("You didn't type an integer."); }  Avoiding reading past the end of a file: Scanner input = new Scanner(new File("example.txt")); if (input.hasNext()) { String token = input.next(); // will not crash! System.out.println("next token is " + token); } 15 viska@unsyiah.ac.id
  • 16. Copy file File f1 = new File("test1.txt"); File f2 = new File("target.txt"); InputStream in = new FileInputStream(f1); OutputStream out = new FileOutputStream(f2); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); System.out.println("File berhasil dicopy!"); 16 viska@unsyiah.ac.id
  • 18. java.nio  New input/output (NIO) pertama sekali diperkenalkan pada J2SE 4.  NIO menyediakan akses cepat dan block-oriented untuk proses I/O.  Java.io vs java.nio  Stream vs block 18 viska@unsyiah.ac.id
  • 19. Stream vs Block  Stream-oriented I/O  Mengurus data satu byte pada satu waktu. Suatu input stream akan menghasilkan satu byte data dan output stream akan membaca satu byte data. Walau demikian, sangatlah mudah dan sederhana dalam melakukan filter pada data stream, namun stream I/O lebih lambat.  Block-oriented I/O  Mengurus data dalam block. Setiap operasi menghasilkan dan membaca satu blok data pada satu waktu. Hasilnya proses menjadi lebih cepat, namun proses filter menjadi lebih sukar. 19 viska@unsyiah.ac.id
  • 21. Sistem File  Sistem file akan menyimpan dan mengorganisasi berbagai file media sehingga mudah untuk dicapai.  Umumnya disusun menjadi bentuk tree/pohon (struktur hirarki)  Pada node akar, akan ada file dan directory, kemudian directory tadi akan mengandung file dan directory, kemudian directory akan mengandung file dan directory lagi, … dst. 21 viska@unsyiah.ac.id
  • 22. Apa itu path?  Setiap file dan directory pasti memiliki path/laluan pada sistem file, yang bermula dari node akar.  Contoh pada gambar sebelumnya:  /home/sally/statusReport pada Solaris OS  C:homesallystatusReport pada Windows  Karakter yang digunakan untuk memisahkan directory disebut delimiter. Dan bersifat spesifik terhadap OS.  Pada Solaris OS: /  Pada Windows OS: 22 viska@unsyiah.ac.id
  • 23. Class Paths dan Interface Path  Diperkenalkan pada J2SE 7 dan ada dalam package java.nio.file  Merupakan representasi dari path pada sistem file.  Objek Path mengandung nama file dan directory yang akan membentuk path sehingga dapat digunakan untuk memeriksa, melokasikan dan memanipulasi file.  Path akan mengikuti sistem file dari OS.  Objek Path dapat di-append, extract dan dibandingkan dengan path lain. 23 viska@unsyiah.ac.id
  • 24. Cipta objek Path  Mencipta objek Path dengan menggunakan method get  Path p1 = Paths.get("/tmp/foo");  Path p2 = Paths.get(args[0]);  Path p3 = Paths.get(URI.create("file:///Users/joe/FileTest.java"));  Bentuk ringkas dari:  Path p4 = FileSystems.getDefault().getPath("/users/sally"); 24 viska@unsyiah.ac.id
  • 25. Mencapai informasi dari Path  Setiap nama directory dapat diakses dengan index.  Direktori paling atas: index 0  Direktori paling bawah: index n-1 (dimana n merupakan jumlah direktori pada Path) 25 viska@unsyiah.ac.id
  • 26. Contoh penggunaan absolute Path viska@unsyiah.ac.id26
  • 27. Contoh penggunaan relative path viska@unsyiah.ac.id27
  • 28. Gabung dua Path  Dua path dapat digabungkan menggunakan method resolve. viska@unsyiah.ac.id28
  • 29. Membandingkan dua Path  Path mensupport method equals, sehingga dua path dapat dibandingkan dengan method tersebut.  Juga memiliki method startsWith dan endsWith untuk mengecek awalan dan akhiran dari path. viska@unsyiah.ac.id29
  • 30. Fitur lain dari Path  Implements Iterable sehingga bisa menggunakan method iterator untuk menjejaki unsur nama dalam path satu per satu.  Implements Comparable sehingga bisa menggunakan method compareTo, yang dapat dipakai untuk sorting  Objek Path juga dapat disimpan dalam Collection. viska@unsyiah.ac.id30
  • 32. Class Files  Class Files merupakan bagian penting dari package java.nio.file.  Class ini menyediakan static method untuk melakukan proses membaca, menulis dan memanipulasi file dan directory.  Class ini merupakan bagian dari new I/O (NIO) maka menyediakan method untuk memproses data secara block.  Sehingga operasi menjadi lebih cepat dan sederhana. viska@unsyiah.ac.id32
  • 33. Baca Files  Baca seluruh isi Files  byte[] bytes = Files.readAllBytes(path);  Jika ingin diubah ke String, tinggal tambahkan:  String content = new String(bytes, charset);  Baca file terbagi menjadi per baris  List<String> lines = Files.readAllLines(path, charset);  Method-method di atas berguna untuk file teks yang tidak terlalu panjang. viska@unsyiah.ac.id33
  • 34. Tulis Files  Tulis string ke Files  Files.write(path, content.getBytes(charset));  Tambah string ke Files yang telah ada isi, di bagian ujungnya  Files.write(path, content.getBytes(charset), StandardOpenOption.APPEND);  Tambah collection baris ke Files  Files.write(path, lines); viska@unsyiah.ac.id34
  • 35. Baca dan Tulis Files yang lebih besar  Jika Files yang dibaca itu besar ataupun berupa binary, maka kita dapat memanfaatkan streams atau reader/writer InputStream in = Files.newInputStream(path); OutputStream out = Files.newOutputStream(path); Reader in = Files.newBufferedReader(path, charset); Writer out = Files.newBufferedWriter(path, charset);  Method di atas mempermudah kerja kita, karena tidak perlu memakai FileInputStream, FileOutputStream, BufferedReader, or BufferedWriter. viska@unsyiah.ac.id35
  • 36. Copy, pindah, hapus Files  Mengcopy satu file  Files.copy(fromPath, toPath);  Pindah satu file (maksudnya copy file dan hapus original)  Files.move(fromPath, toPath);  Dengan 2 method di atas, proses copy dan move akan gagal jika target file telah wujud. Kalau ingin mereplace file target dan copy seluruh atribut file:  Files.copy(fromPath, toPath, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES); viska@unsyiah.ac.id36
  • 37. Copy, pindah, hapus Files  Untuk move untuk memastikan berhasil akan dihapus, namun jika tidak file original masih ada  Files.move(fromPath, toPath, StandardCopyOption.ATOMIC_MOVE);  Hapus file  Files.delete(path);  Method delete akan menghasilkan exception jika tidak wujuh, jadi cara lebih aman:  boolean deleted = Files.deleteIfExists(path);  Method delete juga dapat digunakan untuk menghapus directory. viska@unsyiah.ac.id37
  • 38. Create Files dan Directories  Buat satu directory baru  Files.createDirectory(path);  Dengan method di atas, semua unsur dari path harus wujud kecuali unsur directory terakhir (yang ingin dibuat)  Buat intermediate directory  Files.createDirectories(path);  Buat file kosong  Files.createFile(path);  Temporary file dan directory  Path newPath = Files.createTempFile(dir, prefix, suffix); Path newPath = Files.createTempFile(prefix, suffix); Path newPath = Files.createTempDirectory(dir, prefix); Path newPath = Files.createTempDirectory(prefix); viska@unsyiah.ac.id38
  • 39. Mendapatkan informasi dari Files  Method berikut akan mengembalikan boolean  exists  isHidden  isReadable, isWritable, isExecutable  isRegularFile, isDirectory, isSymbolicLink  Jumlah bytes dalam file  long fileSize = Files.size(path);  getOwner yang mengembalikan UserPrincipal  readAttributes yang mengembalikan BasicFileAttributes viska@unsyiah.ac.id39
  • 40. Iterating over the Files in a Directory  Pada class File versi lama, proses membaca file di directory disimpan dalam array. Namun hal ini bisa menjadi lambat jika file sangat banyak  Pada NIO, kita dapat pakai DirectoryStream yang implement iterable sehingga kita bisa pakai Iterator.  try (DirectoryStream<Path> entries = Files.newDirectoryStream(dir)) { for (Path entry : entries) Process entries }  Blok try-with-resources memastikan DirectoryStream ditutup sesudah digunakan.  Dapat memfilter dengan glob  try (DirectoryStream<Path> entries = Files.newDirectoryStream(dir, "*.java")) viska@unsyiah.ac.id40
  • 41. Glob pattern  Glob pattern merupakan pola string yang dipadankan dengan string lain, seperti directory atau nama file. viska@unsyiah.ac.id41