I File in Java: differenze tra le versioni

Da Bioingegneria Elettronica e Informatica.
(Lettura e scrittura di file di testo)
(Lettura e Scrittura su File)
Riga 10: Riga 10:
 
<syntaxhighlight lang="java" line>
 
<syntaxhighlight lang="java" line>
 
import java.io.BufferedReader;
 
import java.io.BufferedReader;
import java.io.DataOutputStream;
 
 
import java.io.File;
 
import java.io.File;
import java.io.FileInputStream;
 
 
import java.io.FileNotFoundException;
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+
import java.io.FileReader;
 
import java.io.IOException;
 
import java.io.IOException;
 
import java.io.InputStreamReader;
 
import java.io.InputStreamReader;
 
import java.io.PrintWriter;
 
import java.io.PrintWriter;
 +
import java.io.RandomAccessFile;
  
public class File_Test {
+
public class GestioneFile {
  
String fileName = "ciao.txt";
+
String textFileName = "testo.txt";
 +
String binaryFileName = "binario.dat";
 
 
 
public void printFile() {
 
public void printFile() {
 
try {
 
try {
PrintWriter output = new PrintWriter(fileName);
+
PrintWriter output = new PrintWriter(textFileName);
output.write("casa");
+
output.print("Stampa su file di una stringa di testo");
 
output.close();
 
output.close();
 
} catch (FileNotFoundException e) {
 
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
+
// Blocco di gestione delle eccezioni
 
e.printStackTrace();
 
e.printStackTrace();
 
}
 
}
Riga 37: Riga 37:
 
String line = null;
 
String line = null;
 
try {
 
try {
InputStreamReader console = new InputStreamReader(System.in);
+
// Lettura di input da console
InputStreamReader file = new InputStreamReader(new FileInputStream(new File("ciao.txt")));
+
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
 +
line = console.readLine();
 +
System.out.println(line);
 
 
BufferedReader reader = new BufferedReader(console);
+
// Lettura di input da file
line = reader.readLine();
+
BufferedReader fileReader = new BufferedReader(new FileReader(new File(textFileName)));
reader.close();
+
// Lettura di un singolo carattere
 +
char c = (char)fileReader.read();
 +
System.out.print(c);
 +
// Lettura di una riga di testo
 +
line = fileReader.readLine();
 +
 +
fileReader.close();
 
console.close();
 
console.close();
 
 
 
 
 
} catch (IOException e) {
 
} catch (IOException e) {
// TODO Auto-generated catch block
+
// Blocco di gestione delle eccezioni
 
e.printStackTrace();
 
e.printStackTrace();
 
}
 
}
Riga 56: Riga 64:
 
int[] v = new int[] {1000,2,3,4,5,6,7,8,9,10};
 
int[] v = new int[] {1000,2,3,4,5,6,7,8,9,10};
 
try {
 
try {
FileOutputStream file = new FileOutputStream(new File("binario.dat"));
+
RandomAccessFile binaryFile = new RandomAccessFile(new File(binaryFileName), "rw");
DataOutputStream stream = new DataOutputStream(file);
+
 
for (int i = 0; i < 10; i++) {
 
for (int i = 0; i < 10; i++) {
stream.writeInt(v[i]);
+
binaryFile.writeInt(v[i]);
 
}
 
}
//stream.close();
+
binaryFile.close();
file.close();
+
 
} catch (Exception e) {
 
} catch (Exception e) {
// TODO Auto-generated catch block
+
// Blocco di gestione delle eccezioni
 +
e.printStackTrace();
 +
}
 +
}
 +
 +
public void readBinaryFile() {
 +
try {
 +
File file = new File(binaryFileName);
 +
RandomAccessFile binaryFile = new RandomAccessFile(file, "r");
 +
 +
int numIntegers = (int)file.length()/4;
 +
int[] v = new int[numIntegers];
 +
 +
for (int i = 0; i < numIntegers; i++) {
 +
v[i] = binaryFile.readInt();
 +
}
 +
 +
binaryFile.close();
 +
 +
// Stampa il vettore acquisito
 +
for (int i = 0; i < numIntegers; i++) {
 +
System.out.print(v[i] + " ");
 +
}
 +
} catch (Exception e) {
 +
// Blocco di gestione delle eccezioni
 
e.printStackTrace();
 
e.printStackTrace();
 
}
 
}
 
}
 
}
 
}
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>

Versione delle 10:50, 19 mag 2017

Introduzione

Java fornisce classi e metodi per scrivere e leggere dati da files; le tipologie di files che si possono trovare sono sostanzialmente due:

  • file di testo;
  • file binari.

Grazie alle classi fornite da Java, la gestione dell'input/output da file è indipendente dalla piattaforma su cui il programma verrà eseguito; inoltre, le operazioni di I/O sono basate sul concetto di flusso (stream), ovvero una sequenza ordinata di dati che ha una sorgente e una destinazione.

Per leggere dati da una sorgente bisogna collegarla a uno stream, dove leggere le informazioni in modo ordinato. Analogamente, per scrivere dati su una destinazione, bisogna collegarla a uno stream in cui inserire i dati in modo sequenziale. All’inizio di queste operazioni occorre aprire lo stream e alla fine occorre chiuderlo.

Lettura e Scrittura su File

  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.io.PrintWriter;
  8. import java.io.RandomAccessFile;
  9.  
  10. public class GestioneFile {
  11.  
  12. 	String textFileName = "testo.txt";
  13. 	String binaryFileName = "binario.dat";
  14.  
  15. 	public void printFile() {
  16. 		try {
  17. 			PrintWriter output = new PrintWriter(textFileName);
  18. 			output.print("Stampa su file di una stringa di testo");
  19. 			output.close();
  20. 		} catch (FileNotFoundException e) {
  21. 			// Blocco di gestione delle eccezioni
  22. 			e.printStackTrace();
  23. 		}
  24. 	}
  25.  
  26. 	public String readFromFile() {	
  27. 		String line = null;
  28. 		try {
  29. 			// Lettura di input da console
  30. 			BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
  31. 			line = console.readLine();
  32. 			System.out.println(line);
  33.  
  34. 			// Lettura di input da file
  35. 			BufferedReader fileReader = new BufferedReader(new FileReader(new File(textFileName)));
  36. 			// Lettura di un singolo carattere
  37. 			char c = (char)fileReader.read();
  38. 			System.out.print(c);
  39. 			// Lettura di una riga di testo
  40. 			line = fileReader.readLine();	
  41.  
  42. 			fileReader.close();
  43. 			console.close();
  44.  
  45.  
  46. 		} catch (IOException e) {
  47. 			// Blocco di gestione delle eccezioni
  48. 			e.printStackTrace();
  49. 		}
  50. 		return line;
  51. 	}
  52.  
  53. 	public void writeBinaryFile() {
  54. 		int[] v = new int[] {1000,2,3,4,5,6,7,8,9,10};
  55. 		try {
  56. 			RandomAccessFile binaryFile = new RandomAccessFile(new File(binaryFileName), "rw");
  57. 			for (int i = 0; i < 10; i++) {
  58. 				binaryFile.writeInt(v[i]);
  59. 			}
  60. 			binaryFile.close();
  61. 		} catch (Exception e) {
  62. 			// Blocco di gestione delle eccezioni
  63. 			e.printStackTrace();
  64. 		}
  65. 	}
  66.  
  67. 	public void readBinaryFile() {
  68. 		try {
  69. 			File file = new File(binaryFileName);
  70. 			RandomAccessFile binaryFile = new RandomAccessFile(file, "r");
  71.  
  72. 			int numIntegers = (int)file.length()/4;
  73. 			int[] v = new int[numIntegers];
  74.  
  75. 			for (int i = 0; i < numIntegers; i++) {
  76. 				v[i] = binaryFile.readInt();
  77. 			}
  78.  
  79. 			binaryFile.close();
  80.  
  81. 			// Stampa il vettore acquisito
  82. 			for (int i = 0; i < numIntegers; i++) {
  83. 				System.out.print(v[i] + " ");
  84. 			}
  85. 		} catch (Exception e) {
  86. 			// Blocco di gestione delle eccezioni
  87. 			e.printStackTrace();
  88. 		}
  89. 	}
  90. }