Created
October 6, 2014 18:24
-
-
Save devniel/2aee470f6d42cd5dc1eb to your computer and use it in GitHub Desktop.
Writing an file using UTF-8 without BOM encoding
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import java.io.BufferedInputStream; | |
| import java.io.BufferedReader; | |
| import java.io.BufferedWriter; | |
| import java.io.FileInputStream; | |
| import java.io.FileNotFoundException; | |
| import java.io.FileOutputStream; | |
| import java.io.IOException; | |
| import java.io.InputStream; | |
| import java.io.InputStreamReader; | |
| import java.io.OutputStreamWriter; | |
| import org.eclipse.swt.widgets.Display; | |
| import org.eclipse.swt.widgets.Label; | |
| import org.eclipse.swt.widgets.ProgressBar; | |
| import org.eclipse.swt.widgets.Shell; | |
| public class LimpiezaRunnable implements Runnable { | |
| public Shell shell; | |
| public Display display; | |
| public String fileFilterPath; | |
| public String fileName; | |
| public String fileExtension; | |
| public String filePath; | |
| public Label labelMensajePrincipal; | |
| public Label labelMensajeSecundario; | |
| public LimpiezaCompletaListener listener; | |
| public ProgressBar progressBar; | |
| public Shell getShell() { | |
| return shell; | |
| } | |
| public void setShell(Shell shell) { | |
| this.shell = shell; | |
| } | |
| public LimpiezaCompletaListener getListener() { | |
| return listener; | |
| } | |
| public void setListener(LimpiezaCompletaListener listener) { | |
| this.listener = listener; | |
| } | |
| public String getFileFilterPath() { | |
| return fileFilterPath; | |
| } | |
| public void setFileFilterPath(String fileFilterPath) { | |
| this.fileFilterPath = fileFilterPath; | |
| } | |
| public String getFileName() { | |
| return fileName; | |
| } | |
| public void setFileName(String fileName) { | |
| this.fileName = fileName; | |
| } | |
| public String getFileExtension() { | |
| return fileExtension; | |
| } | |
| public void setFileExtension(String fileExtension) { | |
| this.fileExtension = fileExtension; | |
| } | |
| public String getFilePath() { | |
| return filePath; | |
| } | |
| public void setFilePath(String filePath) { | |
| this.filePath = filePath; | |
| } | |
| public Display getDisplay() { | |
| return display; | |
| } | |
| public void setDisplay(Display display) { | |
| this.display = display; | |
| } | |
| public ProgressBar getProgressBar() { | |
| return progressBar; | |
| } | |
| public void run() { | |
| try { | |
| BufferedReader br; | |
| BufferedWriter writer = null; | |
| BufferedWriter writer2 = null; | |
| // Leer archivo | |
| br = new BufferedReader(new InputStreamReader(new FileInputStream( | |
| filePath), "UTF-8")); | |
| final Integer lines = this.countLines(filePath); | |
| this.display.syncExec(new Runnable() { | |
| @Override | |
| public void run() { | |
| progressBar.setMaximum(lines); | |
| } | |
| }); | |
| // Preparar creación de archivo de resultado | |
| writer = new BufferedWriter(new OutputStreamWriter( | |
| new FileOutputStream(fileFilterPath + "/" + fileName | |
| + "_LIMPIO" + fileExtension), "UTF-8")); | |
| // Preparar creación de archivo de log | |
| writer2 = new BufferedWriter(new OutputStreamWriter( | |
| new FileOutputStream(fileFilterPath + "/" + fileName | |
| + "_LOG_LIMPIEZA" + fileExtension), "UTF-8")); | |
| String line = br.readLine(); | |
| int i = 0; | |
| boolean sw = false; | |
| if(line.startsWith("\uFEFF")){ | |
| System.out.println(line.charAt(0)); | |
| line = line.substring(1); | |
| } | |
| while (line != null) { | |
| String tmpline = line.substring(27,67); | |
| if (tmpline.contains("Ä")) { | |
| writer2.write("Reemplazado caracteres Ä en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| String cleaned_line = tmpline.replace("Ä", "A"); | |
| if (cleaned_line.contains("Å")) { | |
| writer2.write("Reemplazado caracteres Å en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Å", "A"); | |
| if (cleaned_line.contains("É")) { | |
| writer2.write("Reemplazado caracteres É en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("É", "E"); | |
| if (cleaned_line.contains("Ö")) { | |
| writer2.write("Reemplazado caracteres Ö en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ö", "O"); | |
| if (cleaned_line.contains("Ü")) { | |
| writer2.write("Reemplazado caracteres Ü en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ü", "U"); | |
| if (cleaned_line.contains("Ñ")) { | |
| writer2.write("Reemplazado caracteres Ñ en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ñ", "N"); | |
| if (cleaned_line.contains("Á")) { | |
| writer2.write("Reemplazado caracteres Á en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Á", "A"); | |
| if (cleaned_line.contains("Â")) { | |
| writer2.write("Reemplazado caracteres  en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Â", "A"); | |
| if (cleaned_line.contains("À")) { | |
| writer2.write("Reemplazado caracteres À en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("À", "A"); | |
| if (cleaned_line.contains("Ã")) { | |
| writer2.write("Reemplazado caracteres à en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ã", "A"); | |
| if (cleaned_line.contains("Ë")) { | |
| writer2.write("Reemplazado caracteres Ë en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ë", "E"); | |
| if (cleaned_line.contains("È")) { | |
| writer2.write("Reemplazado caracteres È en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("È", "E"); | |
| if (cleaned_line.contains("Ì")) { | |
| writer2.write("Reemplazado caracteres Ì en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ì", "I"); | |
| if (cleaned_line.contains("Ó")) { | |
| writer2.write("Reemplazado caracteres Ó en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ó", "O"); | |
| if (cleaned_line.contains("Ò")) { | |
| writer2.write("Reemplazado caracteres Ò en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ò", "O"); | |
| if (cleaned_line.contains("Ú")) { | |
| writer2.write("Reemplazado caracteres Ú en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ú", "U"); | |
| if (cleaned_line.contains("Û")) { | |
| writer2.write("Reemplazado caracteres Û en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Û", "U"); | |
| if (cleaned_line.contains("Ù")) { | |
| writer2.write("Reemplazado caracteres Ù en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ù", "U"); | |
| if (cleaned_line.contains("Ý")) { | |
| writer2.write("Reemplazado caracteres Ý en la línea " + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replace("Ý", "Y"); | |
| if (cleaned_line.matches("[^a-zA-Z\\d]")) { | |
| writer2.write("Reemplazado otros caracteres extraños en la línea " | |
| + i); | |
| writer2.newLine(); | |
| } | |
| cleaned_line = cleaned_line.replaceAll("[^a-zA-Z\\d]", " "); | |
| // 28,67 | |
| cleaned_line = line.substring(0,27) + cleaned_line + line.substring(67,line.length()); | |
| writer.write(cleaned_line); | |
| if(!sw){ | |
| writer.write("\uFEFF"); | |
| sw = true; | |
| } | |
| writer.newLine(); | |
| line = br.readLine(); | |
| i++; | |
| final int x = i; | |
| this.display.syncExec(new Runnable() { | |
| @Override | |
| public void run() { | |
| progressBar.setSelection(x); | |
| } | |
| }); | |
| } | |
| br.close(); | |
| writer.close(); | |
| writer2.close(); | |
| listener.onComplete(); | |
| } catch (Exception e) { | |
| listener.onError(e); | |
| } | |
| } | |
| public Integer countLines(String filename) throws IOException { | |
| InputStream is = new BufferedInputStream(new FileInputStream(filename)); | |
| try { | |
| byte[] c = new byte[1024]; | |
| int count = 0; | |
| int readChars = 0; | |
| boolean empty = true; | |
| while ((readChars = is.read(c)) != -1) { | |
| empty = false; | |
| for (int i = 0; i < readChars; ++i) { | |
| if (c[i] == '\n') { | |
| ++count; | |
| } | |
| } | |
| } | |
| return (count == 0 && !empty) ? 1 : count; | |
| } finally { | |
| is.close(); | |
| } | |
| } | |
| public void setProgressBar(ProgressBar progressBar) { | |
| this.progressBar = progressBar; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment