Pages: [1]   Go Down
Print
Author Topic: Resettare un file  (Read 599 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« on: 01-06-2012, 16:38:17 »

Ho iniziato da poco a utilizzare l'I/O su file e per il momento conosco la classe FileReader e FileWriter per far ciò.

Devo fare un esercizio in cui dopo aver preso in input un file mi restituisca in un altro file il suo contenuto invertito, es se nel file di input c'è scritto "CIAO A TUTTI" nel file di output dovrebbe esserci scritto "ITTUT A OAIC".Per far ciò devo prima leggere il file per stabilire la dimensione dell'array (che conterrà i caratteri del file) ,poi rileggere di nuovo il file per assegnare in ogni posizione un carattere ed infine invertire l'array.Ecco ma non riesco a fare il secondo passaggio ovvero rileggere di nuovo il file , cioè voglio che il file ritorni all'inizio.Come faccio ? Ho sentito parlare di metodi reset() e mark() ma non so bene come applicarli.Vi posto quello che ho fatto io per il momento :

Code:

import java.io.*;
public class Reader {

     public static void main(String args[]){
          
      FileWriter fout = null;
      FileReader r = null;
      
       try {
          r = new FileReader("input.txt");
              fout = new FileWriter("output.txt");
                
              int n=0, x;
              
              //STABILISCE LA DIMENSIONE DELL'ARRAY
            while ((x = r.read())>=0) {
                 char ch = (char) x;
                 n++;
            }

            r.reset();//CHE FARE ?
            
              //ASSEGNARE IN OGNI LOCAZIONE UN CARATTERE
            char [] A = new char [n];n=0;
            while ((x = r.read())>=0) {
               char ch = (char) x;
               A[n]=ch;n++;
            }
          
              //STAMPARE L'ARRAY INVERTITO
            while(n>=0)
            {
            fout.write(Character.toString(A[n]));
            n--;
            }
  
          r.close();
          fout.close();
        
       }
      
       catch(IOException e){
              System.out.println("Apertura fallita");
              System.exit(1);
       }
     }
}
« Last Edit: 01-06-2012, 16:44:27 by Jack&Daxter » Logged
LtWorf
Forumista Esperto
****
Offline Offline

Posts: 1.079

Ogni cosa da me scritta è da intendersi come opinione personale e non come dato di fatto. Anche le eventuali dimostrazioni matematiche da me scritte saranno opinioni personali e quindi dovranno venire dimostrate da una terza parte di fiducia


WWW
« Reply #1 on: 02-06-2012, 08:26:45 »

se _DEVI PROPRIO_ usare un FileReader, guarda questo metodo:

http://docs.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html#read(char[], int, int)

che legge una porzione di file copiandola in un array.

per sapere la dimensione del file usa il metodo .length() della classe File.

rileggere i file solo per sapere la lunghezza è una cosa molto molto cattiva da fare.
Ad ogni modo se un giorno dovessi spostare il cursore di lettura del file, per una ragione legittima, guarda qui:
http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html




EDIT del mod.: corretto primo link non cliccabile
« Last Edit: 02-06-2012, 13:41:07 by reversengineer » Logged

There are some OO programming languages. I will create the first -_-' language.

LtWorf
Jack&Daxter
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 398



« Reply #2 on: 03-06-2012, 14:33:01 »

Ok ho capito grazie ! Meglio allora evitare se è una cosa molto molto cattiva !  ciao
Logged
Pages: [1]   Go Up
Print
Jump to: