Torna indietro   Hardware Upgrade Forum > Software > Programmazione

PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Abbiamo provato le nuove CPU Intel Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: più core e ottimizzazioni al funzionamento interno migliorano le prestazioni, anche in virtù di prezzi annunciati interessanti. A questo si aggiungono nuove ottimizzazioni software. Purtroppo, a fronte di prestazioni di calcolo elevate, il quadro rimane incerto nel gaming, dove l'andamento rimane altalenante. Infine, rimane il problema della piattaforma a fine vita.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-09-2005, 18:31   #1
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Lettura scrittura file con java

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.

Ultima modifica di Abdujaparov : 03-09-2005 alle 18:31. Motivo: titolo incompleto
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2005, 22:13   #2
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
c'e' qualche piccolo errore sintattico nel file che hai postato, in ogni caso l'eccezione ti viene lanciata nel costruttore perchè il file che vuoi aprire in lettura non esiste.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 03-09-2005, 23:28   #3
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da Abdujaparov
FileReader filer = new FileReader("..\\file\\infor.txt");
FileWriter filew = new FileWriter("..\\file\\infor.txt");
i percorsi dei file in java si passano così:
Codice:
String percorso="c:/percorso/nome_file.estensione";
e poi controlla che il file ci sia, e se non c'è, crealo.
Questo ti consiglio di farlo facendo così:
Cattura una FileNotFoundException, e nel cetch crea il file, in modo che pure che non c'è, il file lo crei e poi puoi salvarci.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2005, 09:37   #4
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Allora il file c'è sicuramente e provando a inserire il file nella cartella del class e modificando così il costruttore il file viene trovato.

Costruttore:
public LeggiScriviDati() {
try{
filer = new FileReader("infor.txt");
filew = new FileWriter("infor.txt");
}catch(IOException e){JOptionPane.showMessageDialog(null, e.getMessage(), "Errore file", JOptionPane.ERROR_MESSAGE);}
}

Ora per quanto riguarda i percorsi mi sembra di ricordare che i percorsi relativi e non assoluti si possano inserire, mi sembra di averlo visto non vorrei sbagliare.
Il percorso c:\ecc ecc è un percorso assoluto ma se un utente decide di mettere il programma in d:\pippo dovrebbe dare problemi ed a me serve che il programma parta sia in c: che in d:.
Poi un altro problema.
Provo a richiamare il metodo (mettendo il file nella stessa cartella del class):
public void setParametri(String[] parametri){
try{
BufferedReader in = new BufferedReader(filer);
PrintWriter out = new PrintWriter (filew);
while (in.ready()){
String buffer = in.readLine();
System.out.println("riga trovata:"+buffer);
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);
}
}

Il metodo dovrebbe inserire i parametri passati nel file ma invece non fa nulla e quello che mi lascia un pò stupito è che la riga:
System.out.println("riga trovata:"+buffer);
Non viene mai stampata, come se nel file non ci fosse nulla e in.ready() sia false, dove in è:
BufferedReader in = new BufferedReader(filer);
A cosa può essere dovuto questo comportamento?
Grazie a tutti, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2005, 10:50   #5
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Scusa, magari non c'entra niente, ma io farei così:
Codice:
boolean more=true;
String buffer="";
while(more){
String dato=in.readLine();
if(dato==null){
more=false
break;
}
else
buffer+=dato;
//e poi continuo con il resto del codi
e vedi quello che succede.
Inutile chiederti se il vettore di parametri che gli passi è pieno, vero???
__________________
My gaming placement

Ultima modifica di franksisca : 04-09-2005 alle 10:51. Motivo: mi ero dimentiocato il break;
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2005, 17:57   #6
ABCcletta
Senior Member
 
L'Avatar di ABCcletta
 
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
Invece di FileReader e FileWriter utilizza gli stream.

FileInputStream fis = new FileInputStream(new File("path_del_file"));
DataInputStream dis = new DataInputStream(fis);

FileOutputStream fos = new FileOutputStream(new File("path_del_file"));
PrintStream ps = new PrintStream(fis);


per leggere una riga da file utilizzi:

dis.readLine();

per scrivere una riga su file utilizzi:

ps.println();


Quando finisci, ricorda di chiudere gli stream col metodo .close()
ABCcletta è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2005, 21:42   #7
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Ho provato a seguire il tuo consiglio però dalle api leggo che il metodo readLine() di DataInputStream è deprecatoe mi viene detto di sostituirlo nel seguente modo:
DataInputStream d = new DataInputStream(in);


with:

BufferedReader d
= new BufferedReader(new InputStreamReader(in));


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?
L'array che passavo prima, per rispondere a franksisca non era vuoto ma conteneva delle stringhe queste per la precisione:
String[] parametri = new String[5];
parametri[0]="192.168.0.16";
parametri[1]="3306";
parametri[2]="tesi";
parametri[3]="tesi";
parametri[4]="juventus";

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.
Grazie, ciao ciao.

Ultima modifica di Abdujaparov : 05-09-2005 alle 21:47.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2005, 22:09   #8
ABCcletta
Senior Member
 
L'Avatar di ABCcletta
 
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
Scusa, ho sbagliato. Il metodo esatto da usare quando usi un DataInputStream è readUTF().

Comunque va benissimo il BufferedInputStream in modo da fare lettura bufferizzata.

Il mio consiglio è quello di cambiare il ciclo.
Direi che puoi effettuare una cosa del genere:

String temp = null;
while( (temp=in.readLine()) != null ) {

}

In questo modo quando non viene letto nulla dal file si esce dal ciclo direttamente...
ABCcletta è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2005, 23:58   #9
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Il problema è proprio questo la condizione che uso io verifica se c'è ancora qualcosa nel file se trova null esce dal ciclo solo che questa condizione è automaticamente false. Ho provato ad eliminare la condizione e ad impostarla a true per vedere cosa prendeva dal file di testo però prende null come parametro è mi lancia un'eccezione appena prende null. Il problema è che non legge assolutamente nulla dal file ed il file non è vuoto perchè contiene questo:

server:
porta:
database:
user:
password:

Come posso fare per fargli leggere da file?
Grazie ancora per la pazienza.
Ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 00:02   #10
ABCcletta
Senior Member
 
L'Avatar di ABCcletta
 
Iscritto dal: Sep 2004
Città: Ovunque
Messaggi: 5804
Quote:
Originariamente inviato da Abdujaparov
Il problema è proprio questo la condizione che uso io verifica se c'è ancora qualcosa nel file se trova null esce dal ciclo solo che questa condizione è automaticamente false. Ho provato ad eliminare la condizione e ad impostarla a true per vedere cosa prendeva dal file di testo però prende null come parametro è mi lancia un'eccezione appena prende null. Il problema è che non legge assolutamente nulla dal file ed il file non è vuoto perchè contiene questo:

server:
porta:
database:
user:
password:

Come posso fare per fargli leggere da file?
Grazie ancora per la pazienza.
Ciao ciao.

Allora, innanzitutto, ti RIconsiglio di utilizzare il while come te l'ho postato più su. Poi, ho un dubbio. Hai inserito il file nella cartella giusta? Potrebbe essere che stai sbagliando cartella, a quel punto l'istruzione <File f = new File("xxx.xxx")> creerebbe un file nuovo ma vuoto, da qui, il null...
ABCcletta è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 02:36   #11
pinok
Senior Member
 
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
Scusa se non ti dico niente sul tuo codice, mi sembrava un po' lungo da leggere e non ho molto tempo.
Ti posto il codice che uso io per leggere un file di configurazione semplice, formato da commenti (iniziano con #).
La parte che ti può essere utile è

this.getClass().getResourceAsStream(configFile)

con la quale ottieni un inputStream del file indicato come percorso relativo a partire da dove si trova la classe che contiene il codice in questione.

Config è un bean a parte per gestire la configurazione.

Codice:
private Config readConfiguration (String configFile) throws Exception
{
  InputStream is = this.getClass().getResourceAsStream(configFile);
  BufferedReader in = new BufferedReader(new InputStreamReader(is));

  Config config = new Config();
		
  while (true)
  {
    String linea = in.readLine();
    if (linea==null) break;
    else
    {
      linea = linea.trim();
      if (!linea.startsWith("#"))	// Salto i commenti
      {
         if (linea.startsWith("server: ")) config.setServer(linea.substring("server:".length()));

         if (linea.startsWith("port: ")) config.setPort(linea.substring("port:".length()));

         // ecc. per tutte le configurazioni
      }
    }
  }
  
  in.close();
  is.close();
  	
  return config;
}

Ultima modifica di pinok : 06-09-2005 alle 02:41.
pinok è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 17:24   #12
Abdujaparov
Senior Member
 
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
Finalmente sono riuscito a leggere dal file evvia!
Ho utilizzato il codice postato da pinok scrivendolo in questo modo:

private String configFile;

public ProvaLettura() {
configFile = "..\\file\\promo.txt";
}

public String[] readConfiguration () throws Exception
{
InputStream is = this.getClass().getResourceAsStream(configFile);
BufferedReader in = new BufferedReader(new InputStreamReader(is));

String[] config = new String[5];

while (true)
{
String linea = in.readLine();
if (linea==null) break;
else
{
linea = linea.trim();
if (!linea.startsWith("//")) // Salto i commenti
{
if (linea.startsWith("server: "))
config[0]=linea.substring("server:".length()).trim();

if (linea.startsWith("port: "))
config[1]=linea.substring("port:".length()).trim();

if (linea.startsWith("database: "))
config[2]=linea.substring("database:".length()).trim();

if (linea.startsWith("utente: "))
config[3]=linea.substring("utente:".length()).trim();

if (linea.startsWith("password: "))
config[4]=linea.substring("password:".length()).trim();

}
}
}

in.close();
is.close();

return config;
}

La lettura funziona anche inserendo il path relativo del file, ringrazio tutti ora provo a scrivere nel file, in pratica devo creare un metodo che sostituisca, nel file letto in precedenza, nuovi parametri a quelli prima ottenuti.
Grazie a tutti, ciao ciao.
Abdujaparov è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2005, 17:39   #13
texerasmo
Senior Member
 
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
Perchè non provi ad usare i file properties?
forse è meglio per il tuo caso

[code]

public class Sneto2 {

/*
Creo il metodo getParamConnection
questo metodo legge e memorizza le chiavi valori del file miofile.properties
param filename dico quale file deve andardi a leggere
@return un Hashtable contente le chiavi valori
*/
public Hashtable getParamConnection(String filename) throws IOException {
//Definisco Hashtable
Hashtable listconn = new Hashtable();

try{
//Gli passo il file da andare a leggere
InputStream is = this.getClass().getResourceAsStream(filename);
PropertyResourceBundle propertyresourcebundle = new PropertyResourceBundle(is);
is.close();
Enumeration enum = propertyresourcebundle.getKeys();
while (enum.hasMoreElements()){
System.out.println("Inizio");
String app_chiave = (String)enum.nextElement();
System.out.println("Chiave= " + app_chiave);
String app_valore = propertyresourcebundle.getString(app_chiave);
app_valore= app_valore.trim();
System.out.println("Valore= "+propertyresourcebundle.getString(app_chiave));
System.out.println("Fine*************");
System.out.println(" ");
listconn.put(app_chiave,app_valore);
}
}catch(Exception ex){
ex.printStackTrace();
}finally {
}
return listconn;

}

[code]
un file properties è fatto in questo modo

server=22.22.22
porta = 8080
texerasmo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
David Sacks lascia il ruolo di 'Crypto C...
LG All Stars 2026: quando l'installatore...
Addio ad Anna's Archive? Ecco la mossa l...
Addio al Mac Pro, Apple mette fine a un ...
Panasonic a MCE 2026: la rivoluzione sil...
Netflix alza la posta: il piano Premium ...
Nimbus Innovation Awards – Cloud Edition...
Wikipedia vieta i contenuti generati dal...
Niente volante, niente schermi: cos&igra...
Gli 'Avengers' di Windows sono tornati: ...
Alien Deathstorm annunciato da Rebellion...
Amazon Haul punta tutto sui prezzi bassi...
Microsoft blocca i driver storici: stret...
Serious Sam: Shatterverse annunciato all...
Nuova Renault Twingo, prima guida: un pr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v