2016-06-20 7 views
1

Ich versuche, diese Datei zu lesen:Probleme Lesen einer Datei

Distinguished/Kunde:

Wir begrüßen Sie zu unserer Firma und wir wollen, dass unsere Beziehung immer sehr zufriedenstellend ist.

Mit freundlichen Grüßen,

Direktor

und es ist obligatorisch, es zu tun, als ob die Worte in der Datei "Paraula" waren Objekte. Diese ist die Klasse Paraula:

public class Paraula { 

    private static final int MAXIM = 900; 
    public char[] lletres; 
    public int longitud; 
    public static boolean salto; 

    /** 
    * El constructor Paraula crea una objecte paraula de longitud 0 (buida) 
    */ 
    public Paraula() { 
     lletres = new char[MAXIM]; 
     longitud = 0; 
    } 

    /** 
    * passa la paraula a cadena de caràcters 
    * @return 
    */ 
    @Override 
    public String toString() { 
     String s = ""; 
     for (int i = 0; i < longitud; i++) { 
      s += lletres[i]; 
     } 
     return s; 
    } 

    /** 
    * Afegeix una lletra que es passa com a paràmetre a la paraula 
    * @param c 
    */ 
    public void afegirCaracter(char c) { 
     if (longitud < MAXIM) { 
      lletres[longitud] = c; 
      longitud++; 
     } 
    } 

    /** 
    * compara l'objecte amb la paraula passada per paràmetre 
    * i retorna vertader si són iguals. És la cerca d'un caràcter diferent 
    * @param p 
    * @return 
    */ 
// public boolean esIgualA(Paraula p) { 
//  int i = 0; 
//  while (lletres[i] == p.lletres[i] && i < longitud) { 
//   i++; 
//  } 
//  return lletres[i] == p.lletres[i]; 
// } 
    public boolean esIgualA(Paraula b) { 
     boolean iguals = longitud == b.longitud; 
     for (int idx = 0; (idx < longitud) && iguals; idx++) { 
      iguals = lletres[idx] == b.lletres[idx]; 
     } 
     return iguals; 
    } 



    /** 
    * retorna vertader si la parula té longitud zero 
    * @return 
    */ 
    public boolean buida() { 
     return longitud == 0; 
    } 
} 

Und ich habe diese Klasse, um die Dateien zu lesen:

public class FicheroPalabraIn { 

    private int x; 
    private FileReader fin = null; 
    public static boolean salto; 

    /** 
    * El constructor FitxerParaulaIn crida al constructor de FileReader i 
    * llegeix fins al principi de la primera paraula si n'hi ha cap o fins al 
    * final de fitxer en cas contrari 
    * 
    * @param nom 
    * @throws Exception 
    */ 
    public FicheroPalabraIn(String nom) throws Exception { 
     fin = new FileReader(nom); 
     x = fin.read(); 
     principiParaula(); 
    } 

    /** 
    * tanca el fitxer de caràcters 
    * 
    * @throws Exception 
    */ 
    public void TancaFitxer() throws Exception { 
     fin.close(); 
    } 

    /** 
    * El mètode llegir retorna una paraula del fitxer, per això cerca el final 
    * de la paraula, en aquest cas s'ha suposat que no hi ha signes de 
    * puntuació diferents de blanc i que la paraula mai serà més gran del 
    * previst. El programa és una cerca del final de la paraula Després de 
    * llegir la paraula ens posicionam al principi de la següent o al fi de 
    * fitxer 
    * 
    * @return 
    */ 
    public Paraula llegir() throws Exception { 
     Paraula p = new Paraula(); 
     char c = (char) x; 

     while ((c != ' ') && (c != '\n') && (c != '\r') && (x != -1)) { 
      p.afegirCaracter(c); 
      x = fin.read(); 
      c = (char) x; 
     } 
     principiParaula(); 

     return p; 
    } 

    public Paraula llegirCarta() throws Exception { //in this method I use a boolean to indicate when it reads a \n but it doesn't work as expected 
     Paraula p = new Paraula(); 
     char c = (char) x; 
     while (x != -1) { 
      x = fin.read(); 
      c = (char) x; 
      if ((c == '\n') || (c == '\r')) { 
       salto = true; 

      } else { 
       p.afegirCaracter(c); 
      } 
     } 
     principiParaula(); 
     return p; 
    } 

    //--------------------------------------------------------------------------------- 
    public Paraula llegirNombre() throws Exception { 
     Paraula p = new Paraula(); 
     char c = (char) x; 

     while ((c != '#') && (x != -1)) { 
      p.afegirCaracter(c); 
      x = fin.read(); 
      c = (char) x; 
     } 
     principiParaula(); 

     return p; 
    } 

    public Paraula llegirDireccion() throws Exception { 
     Paraula p = new Paraula(); 
     char c = (char) x; 

     while ((x != -1) && (c != '\n') && (c != '\r')) { 
      p.afegirCaracter(c); 
      x = fin.read(); 
      c = (char) x; 
     } 
     principiParaula(); 

     return p; 
    } 
    //---------------------------------------------------------------------------------- 

    //El mètode principiParaula és privat i és una cerca del principi de paraula 
    private void principiParaula() throws Exception { 
     char c = (char) x; 
     while (c == ' ' || c == '\n' || c == '\r') { 
      x = fin.read(); 
      c = (char) x; 
     } 
    } 

    /** 
    * El mètode quedenParaules retorna vertader si no s'està al fi de fitxer 
    * 
    * @return 
    */ 
    public boolean QuedenParaules() { 
     return x != -1; 
    } 
} 

Das Problem ist, dass ich brauche, um die Datei zu lesen und dann ein schreiben Sie den Inhalt in einer anderen Datei, aber es liest nicht „\ n“ „\ r“ Wenn ich schreibe, so scheint es in der Quelle die neue Datei-Datei in nur einer Zeile. Wie kann ich es tun, um es zu „retten“ Wenn die Zeichen wissen oder lesen, ist ein ‚\ n‘ es in der neuen Datei zu schreiben und noch esta Verfahren zum Lesen verwenden, als ob die Worte Paraula Objekte wurden?

Danke

+0

Ich weiß es leichter vergessen, aber es ist für die Universität und es ist obligatorisch, es zu tun ich erklärte, wie ich @BooRadley – Januan

+0

Wenn aufgrund einiger Anforderung, die Sie verwenden müssen, dass Sie den Parser 'String Split verwenden können()‚Funktion auf Zeilenenden zu einer Reihe von teil~~POS=TRUNC erhalten. –

Antwort

0

Ich nehme an, Sie FicheroPalabraIn initialisiert wird und dann einen Aufruf llegirCarta().

Diese Methode Ermittelt richtig \ r \ n, aber es speichert sie nicht in dem Objekt vom Typ Paraula, Marken nur die statischen Feld springen als wahr.

zu speichern, wenn Sie das Zeichen wollen, diese Fälle in rufen afegirCaracter().

Auf der anderen Seite, das erste Zeichen in der Datei auf diese Weise nicht gespeichert wird, wird es in dem Aufruf von principiParaula()