// TiedostoEsimerkki.java SJ import java.io.*; public class TiedostoEsimerkki { // Tämä vain joko kopioi tai vertaa tiedostoja // 1. parametrilla k kopioidaan ensimmäinen tiedosto toiseksi // 1. parametrilla v verrataan tiedostojen samuutta public static void main(String args[]) { if (args.length != 3 || ! (args[0].equals("k") || args[0].equals("v"))) { System.err.println("Käyttö: java TiedostoEsimerkki [k|v] tied1 tied2"); return; } byte[] t1 = LueTiedosto(args[1]); if (args[0].equals("k")) KirjoitaTiedosto(args[2], t1); else { int ero = Vertaa(t1, LueTiedosto(args[2])); if (ero >= 0) System.out.println("Ero tavussa " + ero); } } // main // vertaa tavutaulukkojen sisältöä, palauttaa erokohdan tai -1 static int Vertaa(byte[] t1, byte[] t2) { int i = 0; while (true) { if (i == t1.length && i == t2.length) return -1; else if (i == t1.length || i == t2.length) return i; else if (t1[i] != t2[i]) return i; else i++; } } // Lukee tiedoston ja palauttaa tavutaulukon static byte[] LueTiedosto(String nimi) { try { RandomAccessFile f = new RandomAccessFile(nimi, "r"); long len = f.length(); byte[] l = new byte[(int)len]; f.read(l); f.close(); return l; } catch (IOException e) { System.out.println(e); return null; } } // Kirjoittaa tiedoston tavutaulukosta static boolean KirjoitaTiedosto(String nimi, byte[] data) { try { RandomAccessFile f = new RandomAccessFile(nimi, "rw"); f.write(data); f.close(); } catch (IOException e) { System.out.println(e); return false; } return true; } } // class