Newsgroup: it.comp.java
Titolo: Lettura scrittura file

Salve a tutti ho provato a scrivere una classe che mi permette di leggere e 
memorizzare alcune stringhe in un file.
Il file su cui opero si chiama infor.txt ed è nella directory file mentre la 
classe java che lo utilizza è nel package codice. Sia file che codice sono 
nella stessa cartella.
 Il file infor.txt deve ed è organizzato in questo modo:
server: //qua c'è del testo
porta:  //qua c'è del testo
database: //qua c'è del testo
user: //qua c'è del testo
password: //qua c'è del testo
La classe che ho scritto è questa:
package codice;
import java.io.*;
import javax.swing.JOptionPane;
public class LeggiScriviDati {
 private FileReader filer;
 private FileWriter filew;
 public LeggiScriviDati() {
  super();
  try{
   FileReader filer = new FileReader("..\\file\\infor.txt");
   FileWriter filew = new FileWriter("..\\file\\infor.txt");
  }catch(Exception e){JOptionPane.showMessageDialog(null, "File non 
trovato.", "Errore file", JOptionPane.ERROR_MESSAGE);}
 }
 public String[] getParametri(){
  String[] parametri = new String[5];
  try{
  BufferedReader in = new BufferedReader(filer);
  while (in.ready()){
   String buffer = in.readLine();
   if ((buffer.indexOf("server:")) >=0)
    parametri[0]=buffer.substring(buffer.indexOf(":")+1);
   else if((buffer.indexOf("porta:")) >=0)
    parametri[1]=buffer.substring(buffer.indexOf(":")+1);
   else if((buffer.indexOf("database:")) >=0)
    parametri[2]=buffer.substring(buffer.indexOf(":")+1);
   else if((buffer.indexOf("user:")) >=0)
    parametri[3]=buffer.substring(buffer.indexOf(":")+1);
   else if((buffer.indexOf("password:")) >=0)
    parametri[4]=buffer.substring(buffer.indexOf(":")+1);
   in.close();
  }
  }catch(IOException e){JOptionPane.showMessageDialog(null, "Errore 
memorizzazione dati.", "Errore", JOptionPane.ERROR_MESSAGE);;}
  return parametri;
 }
 public void setParametri(String[] parametri){
  try{
  BufferedReader in = new BufferedReader(filer);
  PrintWriter out = new PrintWriter (filew);
  while (in.ready()){
   String buffer = in.readLine();
   if ((buffer.indexOf("server:")) >=0)
    out.print (buffer+parametri[0]);
   else if((buffer.indexOf("porta:")) >=0)
    out.print(buffer+parametri[1]);
   else if((buffer.indexOf("database:")) >=0)
    out.print(buffer+parametri[2]);
   else if((buffer.indexOf("user:")) >=0)
    out.print(buffer+parametri[3]);
   else if((buffer.indexOf("password:")) >=0)
    out.print(buffer+parametri[4]);
            out.flush();
            in.close();
            out.close();
  }
  }catch(IOException e){JOptionPane.showMessageDialog(null, "Errore 
memorizzazione dati.", "Errore", JOptionPane.ERROR_MESSAGE);;}
 }
}
//fine classe
Questo è il piccolo main che ho scritto per provare la classe:
 public static void main(String[] args) {
  LeggiScriviDati lsd = new LeggiScriviDati();
  String[] parametri = new String[5];
  parametri[0]="192.168.0.16";
  parametri[1]="3306";
  parametri[2]="tesi";
  parametri[3]="tesi";
  parametri[4]="juventus";
  lsd.setParametri(parametri);
 }
}
Qua sorgono i problemi, la classe mi viene compilata correttamente però se 
faccio partire il main mi viene subito data un'eccezione quando inzializzo 
la classe infatti mi compare la finestrella che dice file non trovato.
A cosa è dovuto il problema? Dove sbaglio? Il percorso del file mi sembra di 
averlo scritto correttamente e se metto il file nella stessa cartella del 
file class mi viene dato sempre lo stesso errore, che devo fare?
Ah un'ultima cosa c'è un metodo della classe String che permette di 
eliminare tutti gli spazi da una stringa?
Grazie a tutti, ciao ciao.

 eliminare tutti gli spazi da una stringa?
"stringa".trim() per spazi all'inizio e alla fine
-- 
Manny Calavera
Mail to: anforagimailpuntocom²

"Manny Calavera" <leggi...@fir.ma.invalid> ha scritto nel messaggio 
news:op.swjlfogclc...@djehwty.mes...

Grazie mille sai come aiutarmi per l'eccezione che mi viene lanciata nel 
costruttore:
 public LeggiScriviDati() {
try{
FileReader filer = new FileReader("infor.txt");
FileWriter filew = new FileWriter("infor.txt");
}catch(IOException e){
JOptionPane.showMessageDialog(null, e.getMessage(), "Errore file", 
JOptionPane.ERROR_MESSAGE);
}
}
 L'errore mi viene dato subito in FileReader(infatti se commento FileWriter 
mi viene lanciata lo stesso l'eccezione). L'eccezione che mi viene lanciata 
mi dice che è impossibile trovare il file, come devo fare per risolvere?
Grazie, ciao ciao. 

 Grazie, ciao ciao.
Così a naso mi puzza il fatto che tu possa aprire un file sia in lettura  
che scrittura, anche perché va bene leggere ma la priva volta che scrivi  
cancelli tutto.
nb
Sono poco più che un novellino di java non prendere le mie parole come oro  
colato


"Manny Calavera" <leggi...@fir.ma.invalid> ha scritto nel messaggio 
news:op.swklanmflc...@djehwty.mes...

 Seguendo le indicazioni ho modificato così il codice, per adesso ho provato 
solo la lettura ed ecco il codice:
public LeggiScriviDati() {
try{
file = new File("infor.txt");
//filer = new FileReader(file);
//filew = new FileWriter(file);
fis = new FileInputStream(file);
//dis = new DataInputStream(fis);
fos = new FileOutputStream(file);
//ps = new PrintStream(fos);
}catch(IOException e){JOptionPane.showMessageDialog(null, e.getMessage(), 
"Errore file", JOptionPane.ERROR_MESSAGE);}
}
public String[] getParametri(){
String[] parametri = new String[5];
System.out.println("Entro nel metodo get");
try{
BufferedReader in = new BufferedReader(new InputStreamReader(fis));
System.out.println("condizione d'ingresso:"+(in.ready()));
while (in.ready()){
String buffer = in.readLine();
System.out.println("riga trovata:"+buffer);
if ((buffer.indexOf("server:")) >=0)
parametri[0]=buffer.substring(buffer.indexOf(":")+1);
else if((buffer.indexOf("porta:")) >=0)
parametri[1]=buffer.substring(buffer.indexOf(":")+1);
else if((buffer.indexOf("database:")) >=0)
parametri[2]=buffer.substring(buffer.indexOf(":")+1);
else if((buffer.indexOf("user:")) >=0)
parametri[3]=buffer.substring(buffer.indexOf(":")+1);
else if((buffer.indexOf("password:")) >=0)
parametri[4]=buffer.substring(buffer.indexOf(":")+1);
in.close();
}
}catch(IOException e){JOptionPane.showMessageDialog(null, "Errore 
memorizzazione dati.", "Errore", JOptionPane.ERROR_MESSAGE);;}
return parametri;
}
Se richiamo il metodo getParametri ottengo che vengono stampate le stringhe:
"Entro nel metodo get"
e la stringa che mi stampa la condizione del ciclo while:
"condizione d'ingresso:"+(in.ready())
questa condizione è false e non capisco il perchè, il file contiene delle 
stringhe perchè questa condizione è false?
 Come posso fare? Devo per forza poter scrivere su file, vi prego aiutatemi.
Ho provato anche a mettere true come condizione del ciclo while però 
in.readLine() mi ritorna null e la prima riga del file non è vuota contiene, 
per la precisione, questa stringa: "server:".
Grazie, ciao ciao. 

PipedOutputStream and PipedInputStream
Ecco un esempio:
http://home.tiscali.nl/~bmc88/java/sbook/029.html
Buona fortuna!

 aiutatemi.
Prima leggi tutto quello che ti serve, chiudi lo stream di lettura e lo  
apri in scrittura indi scrivi.
Un altra cosa che non ho colto è il motivo per cui passi da un  
FileInputStream non ti basterebbe un FileReader (come era prima)? se prima  
ti diceva che il file è mancante continuerà ad esserlo se non metti a  
posto quella parte
