package com.focasoftware.deboinventario; import androidx.annotation.NonNull; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.nio.channels.FileChannel; /** * Clase para manejar y administrar algunos temas de archivos XML * @author GuillermoR * */ public class XmlCleaner { /** * Funcion que lee un archivos y lo copia a un temporal reemplazando los & por Y *

1� Busca un un temporal *

2� Lo crea de nuevo *

3� Lee el archivos origen y lo copia al temporal reemplazando los & por Y *

4� Reemplaza el archivo viejo por el temporal * @param file * @throws IOException */ public static void xml_cleaning_spechar(@NonNull File file) throws IOException { //1� Busca un un temporal File fileTemp = new File(file.getParent() + "//" + "temp.xml"); if (fileTemp.exists() == true) { fileTemp.delete(); } //2� Lo crea de nuevo fileTemp.createNewFile(); FileReader fileReader = new FileReader(file); FileWriter fileWriter = new FileWriter(fileTemp); BufferedReader input = new BufferedReader(fileReader); BufferedWriter output = new BufferedWriter(fileWriter); String line = null; //3� Lee el archivos origen y lo copia al temporal reemplazando los & por Y while (( line = input.readLine()) != null){ String s = line.replace("&", " Y "); output.write(s); //output.write(System.getProperty("line.separator")); } output.close(); //fileTemp.delete(); //4� Reemplaza el archivo viejo por el temporal file.delete(); file.createNewFile(); copyFile(fileTemp, file); fileTemp.delete(); //return fileResponse; } /** * Copia un archivo origen en uno de destino *

1� Verifica la existnecia de los archivos de origen y destino *

2� Se crean los input y output stream y los canales *

3� Se procede a la transferencia *

4� Se cierran los canales * @param sourceFile * @param destFile * @throws IOException */ private static void copyFile(@NonNull File sourceFile, @NonNull File destFile) throws IOException { System.out.println("::: XmlCleaner 77"); //1� Verifica la existnecia de los archivos de origen y destino if (!sourceFile.exists()) { return; } if (!destFile.exists()) { destFile.createNewFile(); } //2� Se crean los input y output stream y los canales FileChannel source = null; FileChannel destination = null; source = new FileInputStream(sourceFile).getChannel(); destination = new FileOutputStream(destFile).getChannel(); //3� Se procede a la transferencia if (destination != null && source != null) { destination.transferFrom(source, 0, source.size()); } //4� Se cierran los canales if (source != null) { source.close(); } if (destination != null) { destination.close(); } } }