java:write_to_file

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Γράφοντας σε αρχείο ====== ===== Γράφοντας σε αρχεία κειμένου ===== Προκειμένου να γράψετε κείμενο σε αρχείο ή στην κονσόλα μπορείτε να χρησιμοποιήσετε την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html|java.io.PrintWriter]]. **Κατασκευαστές** * ''PrintWriter(String fileName)'' : Κατασκευάζει ένα αντικείμενο της κλάσης //PrintWriter// από ένα αρχείο filename. * ''PrintWriter(File file)'' : Κατασκευάζει ένα αντικείμενο της κλάσης //PrintWriter// από ένα αντικείμενο της κλάσης //File//. **Μέθοδοι** * ''void print(String s)'' : Εκτυπώνει το String s. * ''void println(String s)'' : Εκτυπώνει το String s ακολουθούμενο από χαρακτήρα αλλαγής γραμμής. * ''PrintWriter printf(String format, Object... args)'': Η συγκεκριμένη μέθοδος είναι ανάλογη με την printf της γλώσσας C. Μπορείτε να διαμορφώσετε κατάλληλα μορφοποιημένη έξοδo. Για παράδειγμα, η παρακάτω έκφραση εκτυπώνει έναν αριθμό κινητής υποδιαστολής μέσα σε ένα String ως εξής: <code java TestPrintf.java> import java.io.*; public class TestPrintf { public static void main(String args[]) { double f = 754.541012; System.out.printf("The value of f is: %08.2f %n", f); } } //Το σύμβολο %n συμβολίζει τον χαρακτήρα αλλαγής γραμμής. </code> * ''PrintWriter format(String format, Object... args)'': Ισοδύναμη με την printf. ==== Παράδειγμα εγγραφής σε αρχείο κειμένου ==== Δείτε την παρακάτω κλάση //CopyTextFile// η οποία αντιγράφει το περιεχόμενο ενός αρχείου κειμένου σε ένα νέο με την προϋπόθεση ότι το νέο αρχείο δεν υφίσταται ήδη στο filesystem. <code java CopyTextFile.java> import java.io.*; public class CopyTextFile { import java.io.*; import java.util.*; public class CopyTextFile { public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter src filename: "); String readFilename = sc.next(); File readFile = new File(readFilename); if( !readFile.isFile() ) { System.err.println("Input file does not exist or is not a regular file!"); return; } if( !readFile.canRead() ) { System.err.println("Input file is not readable!"); return; } System.out.print("Enter dst filename: "); String writeFilename = sc.next(); File writeFile = new File(writeFilename); if( writeFile.exists() ) { System.err.println("Output file exists! Unable to overwrite."); return; } try { String input; BufferedReader in = new BufferedReader(new FileReader(readFile)); PrintWriter out = new PrintWriter(writeFile); while( (input = in.readLine()) != null ) { out.println(input); } out.close(); in.close(); } catch( IOException ex ) { ex.printStackTrace(); } } } </code> <WRAP todo 80% center round> Με χρήση του παραπάνω προγράμματος προσπαθήστε να αντιγράψετε μία εικόνα. Τι παρατηρείτε; Γιατί; </WRAP> ===== Γράφοντας σε δυαδικά αρχεία ===== Προκειμένου να γράψετε σε δυαδικά αρχεία (εικόνες, ήχο, βίντεο κλπ) η Java διαθέτει την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html|java.io.FileOutputStream]]. Θα δούμε τις μεθόδους και την χρήση της αναλυτικά παρακάτω **Κατασκευαστές** * ''FileOutputStream(String filename)'' : Δημιουργεί ένα αντικείμενο της κλάσης //FileOutputStream// από το αρχείο με όνομα filename. Στη θέση του //String// filename θα πρέπει να βάλετε το path προς το αρχείο και όχι μόνο το όνομα του. * ''FileOutputStream(File file)'' : Δημιουργεί ένα αντικείμενο της κλάσης //FileOutputStream// από ένα αντικείμενο της κλάσης //File//. **Μέθοδοι** * ''public void write(byte[] b)'' : Γράφει //b.length bytes// στο συγκεκριμένο outputStream. * ''void write(byte[] b, int off, int len)'' : Αντιγράφει στο outputStream //len bytes// από τον πίνακα //b// ξεκινώντας από την θέση off του πίνακα. Εάν θέσετε off=0 αντιγράφει από την αρχή του πίνακα. ==== Παράδειγμα εγγραφής σε δυαδικό αρχείο ==== Δείτε την παρακάτω κλάση //CopyBinFile// (αποτελεί παραλλαγή της //CopyTextFile//), η οποία αντιγράφει το περιεχόμενο ενός αρχείου σε ένα νέο με την προϋπόθεση ότι το νέο αρχείο δεν υφίσταται ήδη στο filesystem. <code java CopyBinFile.java> import java.io.*; import java.util.*; public class CopyBinFile { public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter src filename: "); String readFilename = sc.next(); File readFile = new File(readFilename); if( !readFile.isFile() ) { System.err.println("Input file does not exist or is not a regular file!"); return; } if( !readFile.canRead() ) { System.err.println("Input file is not readable!"); return; } System.out.print("Enter dst filename: "); String writeFilename = sc.next(); File writeFile = new File(writeFilename); if( writeFile.exists() ) { System.err.println("Output file exists! Unable to overwrite."); return; } try { byte []buffer = new byte[2048]; FileInputStream in = new FileInputStream(readFile); FileOutputStream out = new FileOutputStream(writeFile); int read_len; while( (read_len = in.read(buffer)) != -1 ) { out.write(buffer, 0, read_len); } out.close(); in.close(); } catch( IOException ex ) { ex.printStackTrace(); } } } </code> |Προηγούμενο: [[ :java:read_from_file | Διαβάζοντας από ένα αρχείο ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[ :java:object_serialization | Object Serialization ]] |

java/write_to_file.1487334885.txt.gz · Last modified: 2017/02/17 12:34 by gthanos