java:write_to_file
This is an old revision of the document!
Table of Contents
Γράφοντας σε αρχείο
Γράφοντας σε αρχεία κειμένου
Προκειμένου να γράψετε κείμενο σε αρχείο ή στην κονσόλα μπορείτε να χρησιμοποιήσετε την κλάση 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 ως εξής:
- 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 συμβολίζει τον χαρακτήρα αλλαγής γραμμής.
PrintWriter format(String format, Object… args)
: Ισοδύναμη με την printf.
Δείτε την παρακάτω κλάση CopyTextFile η οποία λαμβάνει ως είσοδο στη μέθοδο main τα ονόματα δύο αρχείων κειμένου και αντιγράφει τα περιεχόμενα του πρώτου στο 2ο αρχείο.
- CopyTextFile.java
import java.io.*; public class CopyTextFile { public static void main(String [] args) { if (args.length < 2) { System.err.println("Insufficient number of arguments!"); return; } File readFile = new File(args[0]); File writeFile = new File(args[1]); 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; } 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(); } } }
Γράφοντας σε δυαδικά αρχεία
Προκειμένου να γράψετε σε δυαδικά αρχεία η Java διαθέτει την κλάση 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 η οποία λαμβάνει ως είσοδο στη μέθοδο main τα ονόματα δύο οποιονδήποτε αρχείων και αντιγράφει τα περιεχόμενα του πρώτου στο 2ο αρχείο.
- CopyBinFile.java
import java.io.*; public class CopyBinFile { public static void main(String [] args) { if (args.length < 2) { System.err.println("Insufficient number of arguments!"); return; } File readFile = new File(args[0]); File writeFile = new File(args[1]); 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; } 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(); } } }
java/write_to_file.1459332343.txt.gz · Last modified: 2016/03/30 09:05 (external edit)