Ejemplos prácticos de código
Escenarios completos de adición de datos a archivos CSV
1. Registro básico de datos de usuarios
public class UserLogger {
private static final String CSV_FILE = "/home/labex/users.csv";
public void logUser(String name, int age, String email) {
try (FileWriter fw = new FileWriter(CSV_FILE, true)) {
fw.append(String.format("%s,%d,%s\n", name, age, email));
} catch (IOException e) {
System.err.println("Error logging user: " + e.getMessage());
}
}
}
2. Gestión de registros de transacciones
public class TransactionRecorder {
private static final String TRANSACTION_FILE = "/home/labex/transactions.csv";
public void recordTransaction(double amount, String type, LocalDateTime timestamp) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(TRANSACTION_FILE, true))) {
String transactionData = String.format("%.2f,%s,%s\n", amount, type, timestamp);
bw.write(transactionData);
} catch (IOException e) {
System.err.println("Transaction recording failed: " + e.getMessage());
}
}
}
Flujo de trabajo de adición de datos a archivos CSV
graph TD
A[Input Data] --> B[Validate Data]
B --> C[Format Data]
C --> D[Append to CSV]
D --> E[Error Handling]
3. Adición de datos a archivos CSV resistente a errores avanzada
public class RobustCSVAppender {
public void safeAppend(String filePath, List<String> dataLines) {
try {
Path path = Paths.get(filePath);
// Ensure file exists
if (!Files.exists(path)) {
Files.createFile(path);
}
// Append lines with validation
Files.write(path,
dataLines.stream()
.filter(this::isValidData)
.map(line -> line + "\n")
.collect(Collectors.toList()),
StandardOpenOption.APPEND
);
} catch (IOException e) {
System.err.println("CSV Append Error: " + e.getMessage());
}
}
private boolean isValidData(String data) {
return data!= null &&!data.trim().isEmpty();
}
}
Comparación de métodos de adición de datos a archivos CSV
Método |
Complejidad |
Rendimiento |
Caso de uso |
FileWriter |
Bajo |
Básico |
Archivos pequeños |
BufferedWriter |
Medio |
Eficiente |
Archivos medianos |
Files.write() |
Alto |
Robusto |
Archivos grandes y complejos |
4. Ejemplo de procesamiento por lotes
public class BatchCSVProcessor {
public void processBatchData(List<String[]> dataList, String outputFile) {
try (PrintWriter pw = new PrintWriter(new FileWriter(outputFile, true))) {
dataList.forEach(data ->
pw.println(String.join(",", data))
);
} catch (IOException e) {
System.err.println("Batch processing failed: " + e.getMessage());
}
}
}
Buenas prácticas para desarrolladores de LabEx
- Siempre valide los datos de entrada.
- Utilice un manejo adecuado de excepciones.
- Elija el método de adición adecuado.
- Tenga en cuenta el tamaño del archivo y el rendimiento.
- Implemente mecanismos de registro (logging).
Estrategia de manejo de errores
graph LR
A[Potential Error] --> B{Error Type}
B --> |File Not Found| C[Create File]
B --> |Permission Issue| D[Log Error]
B --> |Data Validation| E[Filter Invalid Data]
Conclusión
Estos ejemplos prácticos demuestran varios enfoques para agregar datos a archivos CSV en Java, mostrando flexibilidad y robustez en diferentes escenarios. Al entender estas técnicas, los desarrolladores pueden gestionar eficientemente las operaciones de archivos CSV en sus aplicaciones.