PDA

Visualizza la versione completa : [JAVA] Lettura/scrittura file


SkOrPiOn`87
21-10-2005, 08:42
Come primo esercizio sui file penso di avere fatto un bel casino... :dhò:



import java.io.*;



public class EsFile {

File file1, file2, file3;
FileInputStream oldMaster, Transaction;
FileOutputStream newMaster;
ObjectInputStream inOldMaster, inTransaction;
ObjectOutputStream outNewMaster;
RecordFile recordMast, writeMast;
Record2File recordTans;

public EsFile() {
super();
file1 = new File("D:\\Programmazione\\java\\EsFile\\oldmast.dat");
file2 = new File("trans.dat");
file3 = new File("newmast.dast");
oldMaster = new FileInputStream(file1); //Riga 20
Transaction = new FileInputStream(file2); //Riga 21
newMaster = new FileOutputStream(file3);
inOldMaster = new ObjectInputStream(oldMaster);
inTransaction = new ObjectInputStream(Transaction);
outNewMaster = new ObjectOutputStream(newMaster);
recordMast = new RecordFile();
recordTans = new Record2File();
}


public static void main(String[] args) {

try {
while ( true ) {

recordMast = (RecordFile) inOldMaster.readObject();
}
}
catch (EOFException eofException) {
closeFile();
}

try {
while ( true ) {

recordTrans = (Record2File) inOldMaster.readObject();
}
}
catch (EOFException eofException) {
closeFile();
}

writeMast = new RecordFile(5, "Federico", 5000.5);
outNewMaster.write(writeMast);

return 0;
}
}



Severity Description Resource In Folder Location Creation Time
2 Unhandled exception type FileNotFoundException EsFile.java EsFile line 20
2 Unhandled exception type FileNotFoundException EsFile.java EsFile line 21
2 Unhandled exception type FileNotFoundException EsFile.java EsFile line 22
2 Unhandled exception type IOException EsFile.java EsFile line 23
2 Unhandled exception type IOException EsFile.java EsFile line 24
2 Unhandled exception type IOException EsFile.java EsFile line 25
2 Cannot make a static reference to the non-static field inOldMaster EsFile.java EsFile line 36
2 Cannot make a static reference to the non-static field recordMast EsFile.java EsFile line 36
2 The method closeFile() is undefined for the type EsFile EsFile.java EsFile line 40
2 Cannot make a static reference to the non-static field inOldMaster EsFile.java EsFile line 46
2 recordTrans cannot be resolved EsFile.java EsFile line 46
2 The method closeFile() is undefined for the type EsFile EsFile.java EsFile line 50
2 Cannot make a static reference to the non-static field writeMast EsFile.java EsFile line 53
2 Cannot make a static reference to the non-static field outNewMaster EsFile.java EsFile line 54
2 Cannot make a static reference to the non-static field writeMast EsFile.java EsFile line 54
2 Void methods cannot return a value EsFile.java EsFile line 56
1 The serializable class Record2File does not declare a static final serialVersionUID field of type long Record2File.java EsFile line 4
1 The serializable class RecordFile does not declare a static final serialVersionUID field of type long RecordFile.java EsFile line 4

SkOrPiOn`87
21-10-2005, 10:59
Perchè se sposto quello che ho scritot nel costruttore dentro il main non ho più gli errori di prima, ma soltanto di serializzazione (dovuti alla classe Record e Record2)?

Che cosa cambia?



import java.io.*;



public class EsFile {

File file1, file2, file3;
FileInputStream oldMaster, Transaction;
FileOutputStream newMaster;
ObjectInputStream inOldMaster, inTransaction;
ObjectOutputStream outNewMaster;
RecordFile recordMast, writeMast;
Record2File recordTans;

public EsFile() {
super();

}


public static void main(String[] args) {
file1 = new File(" D:\\Programmazione\\java\\EsFile\\oldmast.dat");
file2 = new File("trans.dat");
file3 = new File("newmast.dast");
oldMaster = new FileInputStream(file1); //Riga 20
Transaction = new FileInputStream(file2); //Riga 21
newMaster = new FileOutputStream(file3);
inOldMaster = new ObjectInputStream(oldMaster);
inTransaction = new ObjectInputStream(Transaction);
outNewMaster = new ObjectOutputStream(newMaster);
recordMast = new RecordFile();
recordTans = new Record2File();

try {
while ( true ) {

recordMast = (RecordFile) inOldMaster.readObject();
}
}
catch (EOFException eofException) {
closeFile();
}

try {
while ( true ) {

recordTrans = (Record2File) inOldMaster.readObject();
}
}
catch (EOFException eofException) {
closeFile();
}

writeMast = new RecordFile(5, "Federico", 5000.5);
outNewMaster.write(writeMast);

}
}


Severity Description Resource In Folder Location Creation Time
2 Cannot make a static reference to the non-static field file1 EsFile.java EsFile line 22 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field file2 EsFile.java EsFile line 23 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field file3 EsFile.java EsFile line 24 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field file1 EsFile.java EsFile line 25 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field oldMaster EsFile.java EsFile line 25 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field file2 EsFile.java EsFile line 26 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field Transaction EsFile.java EsFile line 26 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field file3 EsFile.java EsFile line 27 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field newMaster EsFile.java EsFile line 27 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field inOldMaster EsFile.java EsFile line 28 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field oldMaster EsFile.java EsFile line 28 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field inTransaction EsFile.java EsFile line 29 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field Transaction EsFile.java EsFile line 29 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field newMaster EsFile.java EsFile line 30 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field outNewMaster EsFile.java EsFile line 30 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field recordMast EsFile.java EsFile line 31 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field recordTans EsFile.java EsFile line 32 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field inOldMaster EsFile.java EsFile line 37 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field recordMast EsFile.java EsFile line 37 21 ottobre 2005 10.58.22
2 The method closeFile() is undefined for the type EsFile EsFile.java EsFile line 41 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field inOldMaster EsFile.java EsFile line 47 21 ottobre 2005 10.58.22
2 recordTrans cannot be resolved EsFile.java EsFile line 47 21 ottobre 2005 10.58.22
2 The method closeFile() is undefined for the type EsFile EsFile.java EsFile line 51 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field writeMast EsFile.java EsFile line 54 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field outNewMaster EsFile.java EsFile line 55 21 ottobre 2005 10.58.22
2 Cannot make a static reference to the non-static field writeMast EsFile.java EsFile line 55 21 ottobre 2005 10.58.22
1 The serializable class Record2File does not declare a static final serialVersionUID field of type long Record2File.java EsFile line 4 21 ottobre 2005 8.48.01
1 The serializable class RecordFile does not declare a static final serialVersionUID field of type long RecordFile.java EsFile line 4 21 ottobre 2005 8.51.39

SkOrPiOn`87
21-10-2005, 11:31
import java.io.*;

public class Poppa {
public static void main(String[] args) {

File f=new File("prova.txt");
FileInputStream fis=new FileInputStream(f);
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
//String linea=br.readLine();
/*while(linea != null) {
System.out.println(linea);
linea=br.readLine();
}*/
}
}

D:\>javac Poppa.java
Poppa.java:11: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
FileInputStream fis=new FileInputStream(f);
^
1 error


NEanche cos' va :cry: PS: Il file esiste, ho provato con il percorso assoluto, ma non va ugualmente...

Gil Mour
21-10-2005, 12:02
Per quanto riguarda il tuo terzo post il problema è che non hai gestito l'eccezione IO. O fai cosi


public static void main (String args[]) throws Exception

o fai cosi


try
{
// tuo codice
} catch (IOException ex) {ex.printStackTrace();}

tagibo
21-10-2005, 13:26
Oltre alla gestione dell'IOException, non so sei hai visto un errore parecchio grave, cioè utilizzare le variabili della classe EsFile nel main.
Infatti le variabili della classe appartengono all'oggetto di tipo EsFile che creerai, mentre nel main devi utilizzare nuove variabili statiche che appartengono solo al main.
Ad esempio:

public class EsFile {

File file1, file2, file3;
FileInputStream oldMaster, Transaction;
FileOutputStream newMaster;
ObjectInputStream inOldMaster, inTransaction;
ObjectOutputStream outNewMaster;
RecordFile recordMast, writeMast;
Record2File recordTans;
// tutte variabili appartenenti ad un oggetto della classe EsFile
.....

public static void main(String[] args) {
file1 = new File("...");
file2 = new File("trans.dat");
file3 = new File("newmast.dast");
FileInputStream oldMaster = new FileInputStream(file1);
FileInputStream Transaction = new FileInputStream(file2);
FileOutputStream newMaster = new FileOutputStream(file3);
// tutte variabili statiche che appartengono al main
....

Ciao! :ciauz:

SkOrPiOn`87
24-10-2005, 06:35
Continuo ad avere problemi sui file, e non capisco il motivo... Tutit gli errori sono dovuti al fatto che il Java non riesce a trovare i file che li dico di aprire (nè con il percorso assoluto nè con il nome del file e basta)... Non so più cosa fare...




public class EsFile extends JFrame {

File file1, file2, file3;
RecordFile recordMast, writeMast;
Record2File recordTrans;

public EsFile() {

super("Dialogs");

setSize(300,300);
setVisible(true);

FileInputStream oldMaster, Transaction;
FileOutputStream newMaster;
ObjectInputStream inOldMaster, inTransaction;
ObjectOutputStream outNewMaster;


file1 = new File("D:/Programmazione/java/EsFile/oldmast.dat");


System.out.println(file1.exists());
try {
oldMaster = new FileInputStream(file1);

}
catch (FileNotFoundException fileNotFoundException) {
JOptionPane.showMessageDialog(this,"error", "errore read file", JOptionPane.ERROR_MESSAGE);
}
catch (IOException ioException) {
JOptionPane.showMessageDialog(this,"error", "errore read file", JOptionPane.ERROR_MESSAGE);
}

inOldMaster = new ObjectInputStream(oldMaster);
recordMast = new RecordFile();

try {
while ( true ) {

recordMast = (RecordFile) inOldMaster.readObject();
}
}
catch (FileNotFoundException fileNotFoundException) {
JOptionPane.showMessageDialog(this,"error", "errore read file", JOptionPane.ERROR_MESSAGE);
}
catch (EOFException endofException) {
inOldMaster.close();
}
catch ( ClassNotFoundException classNotFoundException) {
JOptionPane.showMessageDialog(this,"unable", "classss", JOptionPane.ERROR_MESSAGE);
}
catcht(IOException ioException) {
JOptionPane.showMessageDialog(this,"error", "errore read file", JOptionPane.ERROR_MESSAGE);
}
}
}



Severity Description Resource In Folder Location Creation Time
1 Unreachable catch block for IOException. Only more specific exceptions are thrown and handled by previous catch block(s). EsFile.java EsFile line 35 24 ottobre 2005 6.33.58
2 Unhandled exception type IOException EsFile.java EsFile line 39 24 ottobre 2005 6.33.58
2 Unhandled exception type IOException EsFile.java EsFile line 52 24 ottobre 2005 6.33.58
1 The serializable class EsFile does not declare a static final serialVersionUID field of type long EsFile.java EsFile line 5 24 ottobre 2005 6.33.58
2 The local variable oldMaster may not have been initialized EsFile.java EsFile line 39 24 ottobre 2005 6.33.58
1 The serializable class Record2File does not declare a static final serialVersionUID field of type long Record2File.java EsFile line 4 24 ottobre 2005 6.21.16
1 The serializable class RecordFile does not declare a static final serialVersionUID field of type long RecordFile.java EsFile line 4 24 ottobre 2005 6.21.16

tagibo
24-10-2005, 12:37
ho sbagliato forum!

LeleFT
24-10-2005, 14:10
Quel messaggio (che non ho mai avuto l'onore di vedere nei miei programmi) sta ad indicare che cerchi di catturare delle eccezioni con dei blocchi catch che non le potranno mai catturare perchè tali eccezioni verrebbero catturate già precedentemente da altri blocchi catch (che catturano eccezioni più generali).

Ti consiglio una soluzione che va bene per tutto:


try {
... TUTTE LE ISTRUZIONI
} catch (Exception e) { e.printStackTrace(); }

Senza mettere tanti blocchi try/catch mettine uno solo che monitora tutte le istruzioni e raccoglie tutte le eccezioni. :)

PS: Io ti consiglierei di leggere qualcosa sulla gestione delle eccezioni, perchè mi sembra di capire che non le mai mai trattate prima o non le hai capite a fondo.


Ciao. :ciauz:

SkOrPiOn`87
24-10-2005, 14:55
Ho tolto tutte quelle eccezioni ed ho mesos quella che mi hai consigliato...


Severity Description Resource In Folder Location Creation Time
2 The local variable oldMaster may not have been initialized EsFile.java EsFile line 35 24 ottobre 2005 14.54.15
1 The serializable class EsFile does not declare a static final serialVersionUID field of type long EsFile.java EsFile line 5 24 ottobre 2005 14.54.15
2 Unhandled exception type IOException EsFile.java EsFile line 35 24 ottobre 2005 14.54.15
1 The serializable class Record2File does not declare a static final serialVersionUID field of type long Record2File.java EsFile line 4 24 ottobre 2005 6.21.16
1 The serializable class RecordFile does not declare a static final serialVersionUID field of type long RecordFile.java EsFile line 4 24 ottobre 2005 6.21.16


Adeso ho questi problemi che non so che cosa siano, ma tipo il primo errore penso che sia dato perchè non riesce ad aprire il file, in quanto non lo trova...

SkOrPiOn`87
24-10-2005, 22:47
:messner:

Loading