Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/11/2010, 01:29
crisoof
 
Fecha de Ingreso: noviembre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta controlar errores al momento de leer un archivo antes de cargar dato

q largo el titulo.... todos los otros post en este oro los e tenido q solucionar solo pero esta me sobrepaso... no tengo la mas minima idea de donde tengo q poner el codigo para poder controlar los errores al momento de leer el txt..

les comento tengo un servlet q lee archivos a eleccion
Código:
import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;
import java.util.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class Sube extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        procesaArchivo(request);
        String acc= request.getParameter("acc");
        String enviara = "/Controla.jsp";
        RequestDispatcher envio = getServletContext().getRequestDispatcher(enviara);
        envio.forward(request, response);
    }
    void depura(String cadena)
    {
        System.out.println("El error es " + cadena);
    }

    public boolean procesaArchivo(HttpServletRequest req) {
        try {
            // construimos el objeto que es capaz de parsear la perición
 /*FileItemFactory es una interfaz para crear FileItem*/
        FileItemFactory file_factory = new DiskFileItemFactory();
         /*ServletFileUpload esta clase convierte los input file a FileItem*/
         ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
         List items = servlet_up.parseRequest(req);
         for(int i=0;i<items.size();i++){
             /*FileItem representa un archivo en memoria que puede ser pasado al disco duro*/
             FileItem item = (FileItem) items.get(i);
             if (! item.isFormField()){
                /*definición de ruta donde se guardará en el servidor*/
                 String destino = getServletContext().getContextPath();
                 String destinofinal = getServletContext().getRealPath(destino+"/..");
                 File archivo_server = new File(destinofinal+"/doctos/salida.txt");
                 item.write(archivo_server);
             }
 else
             {
                 System.out.println("campos de texto "+item.getFieldName()+" --- "+item.getString()+"<br>");
              }
         }
        }
        catch(Exception e) {
            depura("Error de Aplicación " + e.getMessage());
            return false;
        }
        return true;
    }

    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
}
con este lo leo... y con esta pagina web controlo las variables leidas y son cargadas en la base de datos
Código:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.io.*"%>
<%@page import="prueba.duoc.Accionista"%>
<%@page import="prueba.duoc.ConexionBD"%>

<%response.reset();
String acc=request.getParameter("acc");
String cuentassalida = request.getParameter("cuentassalida");
String destino = getServletContext().getContextPath();
  String destinofinal = getServletContext().getRealPath(destino+"/..");
  FileReader f = new FileReader(destinofinal+"/doctos/salida.txt");
  BufferedReader b = new BufferedReader(f);
  int codigo= 0;
String rut= null;
String rsocial= null;
String sexo=null;
String estC=null;
String tipo=null;
int acciones= 0;
Accionista a= new Accionista();
   while (true)
      {
      String linea = b.readLine();
      if (linea == null)
            break;
      String lista[] = linea.split(";");
      for (int i = 0; i <lista.length;i++)
          {
          if(i==0)
          codigo=Integer.parseInt(lista[i]);
          else if(i==1)
                  rut = lista[i];
          else if(i==2)
                  rsocial =lista[i];
          else if(i==3)
                  sexo = lista[i];
          else if(i ==4)
                  estC=lista[i];
          else if(i==5)
                  tipo = lista[i];
          else if(i==6)
                  acciones =Integer.parseInt(lista[i]);
          a.setAccodigo(codigo);
          a.setAccrut(rut);
          a.setAccrazonsocial(rsocial);
          a.setAccsexo(sexo);
          a.setAccestadocivil(estC);
          a.setAcctipo(tipo);
          a.setAccacciones(acciones);
          a.insertar();   -----este metodo no tiene q iegar a ejecutarse aun... a menos                      -----------------------------q sean validos los registros
      }
  }
    b.close();
      f.close();
if (a.insertar()!=0){
out.println("falla al cargar");
  }else{%>
  <head>
<meta http-equiv="refresh" content="0; url=/Prueba/menu.jsp">
</head>
     
<p>Cargando datos...</p>
     <%}
%>
el proble esq io no kiero cargarlos registros leidos aun... necesito poder validarlos... como por ejemplo q el id no se repita q haya sido un varchar o string en vez de in cosas asi.... donde tengo q poner las distintas sentencias para poder validar esto... o mejor aun puedo guardar lo leido en un array y manejar desde ahi y luego ingresar los datos a la base de datos..... muy agradecido de antemano