-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLettore.java
99 lines (87 loc) · 2.78 KB
/
Lettore.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package gestionefile;
import java.io.*;
/**
*
* @author MC
* @author (fork) Matteo Bagnoletti Tini
* @version 16/01/23
*/
public class Lettore extends Thread{
/**
* Nome del file da leggere
*/
String nomeFile;
/**
* Se true, legge il file e lo mostra in output, altrimenti lo copia nel file copia.csv
*/
boolean console;
public Lettore(boolean console, String nomeFile){
this.nomeFile = nomeFile;
this.console = console;
}
/**
* Legge il file senza tener conto del tipo di file
* e lo mostra in output
*/
public void leggi(){
int i;
//1) apro il file
try (FileReader fr = new FileReader(nomeFile)) {
//2) leggo carattere per carattere e lo stampo
while((i = fr.read()) != -1)
System.out.print((char) i);
System.out.print("\n\r");
//3) la chiusura del file è automatica
} catch (IOException ex) {
System.err.println(ex.getMessage());
System.err.println("Errore in lettura!");
}
}
public void leggiCSV () {
/* utilizzando la classe DataInputStream leggendo ogni riga come stringa UTF */
try (DataInputStream lettore = new DataInputStream(new FileInputStream(nomeFile))) {
String line;
while (true) {
line = lettore.readUTF();
System.out.print(line);
}
} catch (EOFException ignored) {
/* non c'è più niente da leggere */
} catch (IOException ex) {
System.err.println(ex.getMessage());
System.err.println("Errore in lettura!");
}
}
public void copia(){
StringBuilder contenuto = new StringBuilder();
int i;
//1) apro il file
try (FileReader fr = new FileReader(nomeFile)){
//2) leggo carattere per carattere e lo stampo
while ((i=fr.read()) != -1)
contenuto.append((char) i);
System.out.print("\n\r");
//3) la chiusura del file è automatica
} catch (IOException ex) {
System.err.println(ex.getMessage());
System.err.println("Errore in lettura!");
}
Scrittore scrittore = new Scrittore("src/gestionefile/copia.csv", contenuto.toString());
Thread threadScrittore = new Thread(scrittore);
threadScrittore.start();
try {
threadScrittore.join();
} catch (InterruptedException ex) {
System.err.println("Errore nel metodo join()");
}
}
public void run(){
if (this.nomeFile.contains("user.csv")) {
leggiCSV();
} else if (this.console){
leggi();
} else {
copia();
}
}
}