mass cat
La comanda cat de linux permet imprimir els continguts d'un fitxer. Anem a fer un cat en massa per múltiples fitxers. El path al directori a on estan als fitxers es in
, i accedir a qualsevol altre path donarà error.
Entrada
una sola línea amb el nom del fitxer d'entrada. Per tant, si reps a1.txt
el fitxer d'entrada estara a in/a1.txt
Sortida
El programa escriurà els continguts del fitxer. El fitxer pot tenir més d'una línea
Solució
Per a que s'entenguin millor com funciona el sistema de links simbòlics, s'aporta la solució al problema
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class MassCat {
public static void main(String[] args) {
BufferedReader reader;
Scanner sc = new Scanner(System.in);
try {
String fi = sc.nextLine(); //es llegeix l'arxiu de text
reader = new BufferedReader(new FileReader("in/"+fi)); //el path sempre sera "in/"+ el nom de l'arxiu de text
String line = reader.readLine(); //es llegeix la línea
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Links simbòlics
Tots els problema de fitxers fan servir links simbòlics proporcionats en la propia estructura del problema.
En la majoria de problemes, a on hi ha més d'un cas de prova, "in" apuntara a un directori i nom del fitxer et vindrà per l'entrada del problema (i per tant el llegiràs desde Scanner.nextLine()).
De la mateixa manera, en la majoria de problemes, "out" serà un directori i tu escriuraras a out/ElNomQueTuVulguis , i després posaràs ElNomQueTuVulguis com a sortida del programa (per tant, com a System.out.println())
L'estructura de fitxers és Linux, amb el que no cal en cap cas posar el .txt . Tots els fitxers ja es tracten de la forma adient automàticament.
La localització dels fitxers és secreta. No teniu permisos d'escriptura a "in" ni permisos de lectura a "out".
INTENTAR ACCEDIR A QUALSEVOL ALTRE DIRECTORI FALLARÀ, I AIXERCARÀ UNA ALARMA CRÍTICA DE SEGURETAT QUE EM SERÀ NOTIFICADA PER CORREU INMEDIATAMENT
Comentaris
Gracias por el puntito