File dan Directory. Prepared by Viska Mutiawani. 1

dokumen-dokumen yang mirip
Topik. Stream I/O Cara menggunakan Stream Hierarchy Java I/O Membaca File Menulis File Menghapus File Cara membaca isi Direktori dalam file

I/O Streams. Oleh Kholid Fathoni

STREAM DAN FILE. PipedInputStream, SequenceInputStream, dan StringBufferInputStream.

BAB Argument Command-Line dan System Properties

PRAKTIKUM 8 FILE INPUT OUTPUT

IOSTREAM bagian 2. Kholid Fathoni

Pertemuan 7 File pada Java

PRAKTIKUM 7 DASAR INPUT OUTPUT

PEMROGRAMAN JARINGAN MODUL 3 STREAM

A. TUJUAN PEMBELAJARAN

A. TUJUAN PEMBELAJARAN

PEMROGRAMAN II. By : Sri Rezeki Candra Nursari. Penilaian : Gasal TA 2011/2012. UAS (lisan) = 35 % UTS = 25 % Tugas = 15 % Praktikum = 25 %

1.Tujuan. 2. Latar Belakang. Tahu tipe-tipe stream yang umum digunakan Menggunakan class File dan methodnya

Dapat dicompile dan mendapat output hai. Dapat dicompile dan mendapat output disana

2. Pernyataan mana yang dapat kita laksanakan dengan menggunakan class File? Mengganti direktori tempat bekerja saat ini

PENGAKSESAN FILE DI JAVA

Pertemuan ke-1 STREAM DAN IO. A. TUJUAN : Mampu mengimplementasikan kelas-kelas untuk menangani aliran data.

Exception Handling. Prepared by Viska Mutiawani. 1

PEMROGRAMAN JAVA : STREAM DAN FILE

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

Setelah menyelesaikan praktikum ini, mahasiswa diharapkan mampu:

Operator dan Assignment

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

BAHASA PEMROGRAMAN JAVA

PERTEMUAN V STREAM DAN OOP TUJUAN PRAKTIKUM. 2. Praktikan memahami pemrograman berbasis objek dengan mengetahui karakteristik OOP.

CompileError - The method write(int) in the type FileOutputStream is not applicable for

Materi kuliah I/O & FILE. Ir. Roedi Goernida, MT.

Pemrograman Berbasis Objek Operator dan Assignment

PRAKTIKUM 17 MENANGANI EXCEPTION

Overview I/O Streams Byte stream & Character Stream Hirarki class pada package java.io Read & write streams

OPERASI FILE & EXCEPTION HANDLING. Herman Tolle

Introduction To Stream

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

IKG2I4 / Software Project I

PEMOGRAMAN JAVA. Yoannita. Tipe Data (ii) : Array Exception Handling

I/O (Input dan Output)

MK. Pemrograman Berorientasi Objek. Input dari Keyboard. Karmilasari

TUJUAN. Memahami Koneksi dan Pemrosesan Basis Data di Java Memahami JDBC Menggunakan MySQL pada program Java

PRAKTEK 1 CLASS, ATTRIBUTE, METHOD, DAN OBJEK

Cara Membaca File Text di JAVA

PERCOBAAN 6 EXCEPTION

String. Viska Mutiawani, M.Sc

BAB 5 Mendapatkan Input dari Keyboard

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Pemrograman Berorientasi. Exception Handling

Grouping Object. Viska Mutiawani, M.Sc

IF2281 Pemrograman Berorientasi Objek Program kecil Pelengkap Diktat. import java.io.*; import java.util.scanner; class IO {

PRAKTIKUM 6 EXCEPTION

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

5. Consider the following line of code : byte ohmy What is the range of values that could be assigned to the variable ohmy?

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Percobaan 6 Exception

Pemrograman Berorientasi Object

Pemrograman Jaringan 4. Java IO

Exception Handling Lanjutan

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

PENGENALAN JAVA (2)

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

Pengenalan Program Java

BAB 5 Mendapatkan Input dari Keyboard

Penggunaan Netbeans IDE, Hello World, variable dan Operator aritmetika.

Connection Oriented. Kholid F.

Exception Handling. Topik

Bahasa Pemrograman 2.

Pemrograman Dasar P E M R O G R A M A N T E R S T R U K T U R I N P U T / O U T P U T

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

PEMAHAMAN DASAR DASAR JAVA

1. Apa yang harus dilakukan oleh programmer untuk menangani user-defined exception? Menuliskan exception sebagai start method

Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum

PRAKTIKUM I EXCEPTION HANDLING

Input Nilai tanpa Case String di Java

PRAKTIKUM PEMROGRAMAN OBJEK DENGAN JAVA MODUL KE-5 EXCEPTION HANDLING

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

SILABUS MATA KULIAH PEMROGRAMAN JAVA

SUMBER BELAJAR PENUNJANG PLPG

Bahasa Pemrograman :: Dasar Pemrograman Java

Badiyanto, S.Kom., M.Kom. PBO java

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

IKG2I4 / Software Project I

Modul Praktikum Pemrograman

Pemrograman Berorientasi. Methods

Generics. Prepared by Viska Mutiawani. 1

BAB III SEKUENSIAL 3.1. Kompetensi Dasar 3.2. Perintah Masukan a. Scanner

Referensi Bahasa Pemrograman Java

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

PERTEMUAN I PENGENALAN JAVA

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

String. String merupakan tipe data untuk menyimpan nilai berupa teks.

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Definisi Eksepsi (exception)

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Percabangan dan Perulangan

Pemrograman Socket menggunakan TCP

Transkripsi:

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

3 viska@unsyiah.ac.id File pada java.io

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() delete() exists() getname() length() renameto(file) returns whether file is able to be read removes file from disk whether this file exists on disk returns file's name returns number of bytes in file 5 viska@unsyiah.ac.id changes name of file

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.*; import java.util.*; // for File // 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.5\n19.1 7.4 22.8\n\n18.5-1.8 14.9\n ^ 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.5\n19.1 7.4 22.8\n\n18.5-1.8 14.9\n ^ double d = input.nextdouble(); // 16.2 16.2 23.5\n19.1 7.4 22.8\n\n18.5-1.8 14.9\n ^ String s = input.next(); // "23.5" 16.2 23.5\n19.1 7.4 22.8\n\n18.5-1.8 14.9\n ^ 13 viska@unsyiah.ac.id

Scanner tests for valid input Method hasnext() hasnextint() hasnextdouble() Description returns true if there is a next token returns true if there is a next token and it can be read as an int returns true if there is a next token and it can be read as a double 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. 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

17 viska@unsyiah.ac.id Java NIO

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 20 viska@unsyiah.ac.id

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 C:\home\sally\statusReport pada Solaris OS 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 26 viska@unsyiah.ac.id

Contoh penggunaan relative path 27 viska@unsyiah.ac.id

Gabung dua Path Dua path dapat digabungkan menggunakan method resolve. 28 viska@unsyiah.ac.id

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. 29 viska@unsyiah.ac.id

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. 30 viska@unsyiah.ac.id

Files 31 viska@unsyiah.ac.id

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. 32 viska@unsyiah.ac.id

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. 33 viska@unsyiah.ac.id

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); 34 viska@unsyiah.ac.id

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. 35 viska@unsyiah.ac.id

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); 36 viska@unsyiah.ac.id

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. 37 viska@unsyiah.ac.id

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); 38 viska@unsyiah.ac.id

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 39 viska@unsyiah.ac.id

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")) 40 viska@unsyiah.ac.id

Glob pattern Glob pattern merupakan pola string yang dipadankan dengan string lain, seperti directory atau nama file. 41 viska@unsyiah.ac.id