Table of Contents

Γράφοντας σε αρχείο

Γράφοντας σε αρχεία κειμένου

Προκειμένου να γράψετε κείμενο σε αρχείο ή στην κονσόλα μπορείτε να χρησιμοποιήσετε την κλάση java.io.PrintWriter.

Κατασκευαστές

Μέθοδοι

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 συμβολίζει τον χαρακτήρα αλλαγής γραμμής.

Παράδειγμα εγγραφής σε αρχείο κειμένου

Δείτε την παρακάτω κλάση CopyTextFile η οποία αντιγράφει το περιεχόμενο ενός αρχείου κειμένου σε ένα νέο με την προϋπόθεση ότι το νέο αρχείο δεν υφίσταται ήδη στο filesystem.

CopyTextFile.java
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();
    }
  }
}

Με χρήση του παραπάνω προγράμματος προσπαθήστε να αντιγράψετε μία εικόνα. Τι παρατηρείτε; Γιατί;

Γράφοντας σε δυαδικά αρχεία

Προκειμένου να γράψετε σε δυαδικά αρχεία (εικόνες, ήχο, βίντεο κλπ) η Java διαθέτει την κλάση java.io.FileOutputStream. Θα δούμε τις μεθόδους και την χρήση της αναλυτικά παρακάτω

Κατασκευαστές

Μέθοδοι

Παράδειγμα εγγραφής σε δυαδικό αρχείο

Δείτε την παρακάτω κλάση CopyBinFile (αποτελεί παραλλαγή της CopyTextFile), η οποία αντιγράφει το περιεχόμενο ενός αρχείου σε ένα νέο με την προϋπόθεση ότι το νέο αρχείο δεν υφίσταται ήδη στο filesystem.

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();
    }
  }
}