/* * Hason.java * file-ok :SorOlvasó-val történő összehasonlító rutinjai * by pts@fazekas.hu at Fri Mar 30 21:02:36 CEST 2001 * további doksi: a README-ben és e file legkülső class-ának fejkommentjében * * Kincskereső Kisgömböc (C) Early May 2001 by eNTitánok (Rév Szilvia, * Szabó Péter <pts@inf.bme.hu>, Szurdi Miklós, Weizengruber Attila). * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package eNTitanok.util; import java.io.FileInputStream; import java.io.IOException; // import eNTitanok.util.SorOlvaso; /** * File-ok :SorOlvasó-val történő összehasonlító rutinjai. * @see eNTitanok.util.SorOlvaso */ public class Hason { /** * A megadott két file-t :SorOlvasó-val olvasva hasonlítja össze * @return pontosan akkor igaz, ha megegyeznek * @see eNTitanok.util.SorOlvaso * @see eNTitanok.util.Hason#hasonlit_mester * @see eNTitanok.util.Hason#hasonlit_prefix */ public static boolean hasonlit(String nev1, String nev2) throws IOException { // Imp: sorszám/karakterpozíció visszadása SorOlvaso s1=new SorOlvaso(new FileInputStream(nev1)); SorOlvaso s2=new SorOlvaso(new FileInputStream(nev2)); String sor1, sor2; while (true) { sor1=s1.readLine(); sor2=s2.readLine(); if (sor1==null && sor2==null) { s1.close(); s2.close(); return true; } if (sor1==null || sor2==null) { s1.close(); s2.close(); return false; } if (!sor1.equals(sor2)) { s1.close(); s2.close(); return false; } } } /** * A megadott két file-t :SorOlvasó-val olvasva hasonlítja össze, de az első * file-nak csak a prefix-szel kezdődő sorait veszi figyelembe, levágva * belőlük prefix-et. * @return pontosan akkor igaz, ha a file-ok megegyeznek * @see eNTitanok.util.SorOlvaso * @see eNTitanok.util.Hason#hasonlit */ public static boolean hasonlit_prefix(String nev1, String nev2, String prefix) throws IOException { // Imp: sorszám/karakterpozíció visszadása SorOlvaso s1=new SorOlvaso(new FileInputStream(nev1)); SorOlvaso s2=new SorOlvaso(new FileInputStream(nev2)); String sor1, sor2; while (true) { while (true) { sor1=s1.readLine(); if (sor1==null || sor1.startsWith(prefix)) break; } sor1=sor1.substring(prefix.length()); sor2=s2.readLine(); if (sor1==null && sor2==null) { s1.close(); s2.close(); return true; } if (sor1==null || sor2==null) { s1.close(); s2.close(); return false; } if (!sor1.equals(sor2)) { s1.close(); s2.close(); return false; } } } /** * A megadott file <TT>fn_prefix</TT>-szel kezdődő sorából veszi a másik * file nevét, amivel a megadott file <TT>sor_prefix</TT>-szel kezdődő sorait * :SorOlvasó-val olvasva hasonlítja össze. fn_prefix egyszer szerepelhet, * mégpedig az első sor_prefix előtt. * @return pontosan akkor igaz, ha a file-ok megegyeznek * @see eNTitanok.util.SorOlvaso * @see eNTitanok.util.Hason#hasonlit * @see eNTitanok.util.Hason#hasonlit_prefix */ public static boolean hasonlit_mester(String nev1, String fn_prefix, String sor_prefix) throws IOException { // Imp: sorszám/karakterpozíció visszadása SorOlvaso s1=new SorOlvaso(new FileInputStream(nev1)); String sor1, sor2; while ((sor1=s1.readLine())!=null && !sor1.startsWith(fn_prefix)); // System.out.println(sor1); if (null==sor1) return false; // Imp: többféle visszatérési kód SorOlvaso s2=new SorOlvaso(new FileInputStream(sor1.substring(fn_prefix.length()))); while (true) { while (true) { sor1=s1.readLine(); if (sor1==null || sor1.startsWith(sor_prefix)) break; } if (sor1!=null) sor1=sor1.substring(sor_prefix.length()); sor2=s2.readLine(); // System.out.println("ZZZ"); // DEBUG // System.out.println(sor1); // DEBUG // System.out.println(sor2); // DEBUG if (sor1==null && sor2==null) { s1.close(); s2.close(); return true; } if (sor1==null || sor2==null) { s1.close(); s2.close(); return false; } if (!sor1.equals(sor2)) { s1.close(); s2.close(); return false; } } /// WHILE } /// hasonlit_mester() } /// class Hason