Guide for Còpia!
Com abordar aquest problema
Et donen el nom d'un fitxer (per exemple a.txt). Has de llegir el contingut del fitxer que hi ha a \
in/a.txt i escriure'l, exactament igual, en un fitxer nou dins la carpeta out/, amb el mateix nom. \
A més, el programa ha d'escriure per pantalla el nom del fitxer.
Idea general:
- Llegeix el nom del fitxer des de l'entrada estàndard.
- Construeix la ruta d'entrada afegint-hi el prefix
in/i la ruta de sortida afegint-hi el prefix \out/. - Obre el fitxer d'entrada en mode lectura i el de sortida en mode escriptura.
- Copia tot el contingut, sense modificar-lo, de l'un a l'altre.
- Escriu per pantalla (sortida estàndard) el nom del fitxer, no la ruta sencera.
Paranys habituals:
- La carpeta
out/ha d'existir (normalment ja hi és preparada pel judge, però comprova-ho si falla). - Copia el contingut tal qual, sense afegir ni treure salts de línia extra.
- La sortida per pantalla és només el nom del fitxer (
a.txt), noin/a.txtniout/a.txt.
Pista per a Java
Amb BufferedReader i BufferedWriter pots llegir línia a línia el fitxer d'entrada i escriure-la \
al de sortida:
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
String nomFitxer = sc.nextLine().trim();
String rutaEntrada = "in/" + nomFitxer;
String rutaSortida = "out/" + nomFitxer;
try (BufferedReader br = new BufferedReader(new FileReader(rutaEntrada));
BufferedWriter bw = new BufferedWriter(new FileWriter(rutaSortida))) {
String linia;
while ((linia = br.readLine()) != null) {
bw.write(linia);
bw.newLine();
}
}
System.out.println(nomFitxer);
}
}