style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Ayuda con lectura de txt delimitado por espacios

Estimados buen día, estoy intentando leer un txt delimitado por espacios para luego insertar esos datos en una tabla de mysql, pero debido a mi poca experiencia me estoy complicando un poco, lo primero que encontré en la red es una rutina que funciona con stringTokenizer y he estado tratando de adaptarla pero no llego a un buen resultado, me parece que hay problemas además cuando en un campo no hay datos, me pueden orientar con este tema? es la librería mas adecuada?
Adjunto lo que tengo:

package leetexttab;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class leetoken {
public static void main(String[] args) {
BufferedReader br = null;
try {
String line;
br = new BufferedReader(new FileReader("C:\\ gastos.txt"));
while ((line = br.readLine()) != null) {
System.out.println(line);
StringTokenizer stringTokenizer = new StringTokenizer(line, "");
while (stringTokenizer.hasMoreElements()) {

String viewcode = stringTokenizer.nextElement().toString();
String entry =stringTokenizer.nextElement().toString();
String accountn=stringTokenizer.nextElement().toString();

sb.append("\nViewcode : "+ viewcode);
sb.append("\nEntry :" + entry);
sb.append("\nAccountn :" + accountn);
sb.append("\n*******************\n");
System.out.println(sb.toString());
}
}
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();

} catch (IOException ex) {
ex.printStackTrace();
}
}
}

}

Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Re: StringTokenizer

 

Tal vez quieras usar la clase java.nio.file.Files (1) para leer el archivo. No se recomienda utilizar la clase StringTokenizer en nuevos desarrollos. En su lugar debe utilizarse el método split de la clase String o el paquete java.util.regex. (2)

De manera que tu código podría ser similar al siguiente:

try {
    List<String> lines = Files.readAllLines(Paths.get("C:\\gastos.txt"));
    for (String line : lines) {
        String[] array = line.split(" ");
        String viewcode = array.length > 0 ? array[0] : "";
        String entry    = array.length > 1 ? array[1] : "";
        String account  = array.length > 2 ? array[2] : "";
        System.out.printf("Viewcode: %s%nEntry: %s%nAccount: %s%n", viewcode, entry, account);
        System.out.println("*******************");
    }
    System.out.println("Done");
} catch (IOException e) {
    Logger.getGlobal().log(Level.SEVERE, "There was an error", e);
}

¡Espero que sea de utilidad!

Por cierto, un archivo delimitado por espacios no es algo común, aunque sí los archivos delimitados por comas, tabuladores o pipes.


Notas

  1. Desde Java 7, http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
  2. Esta recomendación aparece en el javadoc de la misma clase, incluso desde la Java 1.4. http://da2i.univ-lille1.fr/doc/j2sdk-1.4.2/api/java/util/StringTokenizer...

~~~

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">