Foros del Web » Programación para mayores de 30 ;) » Java »

controlar errores al momento de leer un archivo antes de cargar dato

Estas en el tema de controlar errores al momento de leer un archivo antes de cargar dato en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/11/2010, 01:29
 
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
  #2 (permalink)  
Antiguo 11/11/2010, 08:44
 
Fecha de Ingreso: noviembre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: controlar errores al momento de leer un archivo antes de cargar dato

tambien lo resolvi GRACIAS!!!!!!! por su NO AYUDA!!
  #3 (permalink)  
Antiguo 11/11/2010, 10:37
 
Fecha de Ingreso: enero-2009
Mensajes: 31
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: controlar errores al momento de leer un archivo antes de cargar dato

mira estas dos clases, espero te sirva:



import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author juan.rodriguez
*/
public class Stream {

public static void main(String[] args) {
//Llamar una funcion para ver ejemplo
propertiesFile();
}

/**
* filtra por la extencion del archivo,
* instanciamos Filter
*/
public static void filter(){
File file = new File("c:\\prueba.txt");
String fileName = file.getName();
Filter filter = new Filter();

if(filter.accept(file, fileName))
System.out.println("Extension iguales");
else
System.out.println("Extension diferentes");
}

/**
* lista los archivos del directorio actual
*/
public static void listFileOfDirectoryCurrent(){
File file=new File("c:\\.");
String[] listaArchivos=file.list();
for(int i=0; i<listaArchivos.length; i++){
System.out.println("Archivo: "+listaArchivos[i]);
}
}

/**
* Propiedades del archivo
*/
public static void propertiesFile(){
File file = new File("c:\\prueba.txt");

if(file.exists()){
System.out.println("Nombre del archivo "+file.getName());
System.out.println("Camino "+file.getPath());
System.out.println("Camino absoluto "+file.getAbsolutePath());
System.out.println("Se puede escribir "+file.canRead());
System.out.println("Se puede leer "+file.canWrite());
System.out.println("Tamaño "+file.length()+" KB");
}
}

/**
* Leer un archivo desde una ubicacion y copiar el archivo en una ubicacion diferente
*/
public static void readAndWriteFile(){

FileReader entrada=null;
FileWriter salida=null;

try {
entrada=new FileReader("c:\\prueba.txt");
salida=new FileWriter("c:\\copiaPrueba.txt");
int c;
while((c=entrada.read())!=-1){
salida.write(c);
}
}catch (IOException ex) {
System.out.println(ex);
}finally{
//cerrar los flujos de datos
if(entrada!=null){
try{
entrada.close();
}catch(IOException ex){}
}
if(salida!=null){
try{
salida.close();
}catch(IOException ex){}
}
System.out.println("el bloque finally siempre se ejecuta");
}
}

/**
*Escribir un archivo en una ubicacion.
*/
public static void writerFile() throws IOException{
DataOutputStream salida = null;

double[] precios = {1350, 400, 890, 6200, 8730};
int[] unidades = {5, 7, 12, 8, 30};
String[] descripciones = {"paquetes de papel", "lápices", "bolígrafos", "carteras", "mesas"};
salida = new DataOutputStream(new FileOutputStream("c:\\pedido.txt"));
for (int i = 0; i < precios.length; i++) {
salida.writeChars(descripciones[i]);
salida.writeChar('\n');
salida.writeInt(unidades[i]);
salida.writeChar('\t');
salida.writeDouble(precios[i]);
}
salida.close();
}
}





import java.io.File;
import java.io.FilenameFilter;
import java.util.LinkedList;
import java.util.List;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author juan.rodriguez
*/
public class Filter implements FilenameFilter{
private final List<String> listExtension;

Filter(){
listExtension = new LinkedList<String>();
listExtension.add(".txt");
}

public boolean accept(File dirFile, String nameFile){
boolean bandera = false;
for(String file:this.getListExtension()){
bandera = nameFile.endsWith(file);
}

return bandera;
}

/**
* @return the listExtension
*/
public List<String> getListExtension() {
return listExtension;
}
}
  #4 (permalink)  
Antiguo 11/11/2010, 17:27
 
Fecha de Ingreso: noviembre-2010
Mensajes: 11
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: controlar errores al momento de leer un archivo antes de cargar dato

gracias por tu interes ia lo arregle antes... pero agradesco tu ayuda ahora tengo otros errores de ajax y de manejar una variable desde el servlet xD

Etiquetas: controlar, dato
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:29.