Foro de elhacker.net

Programación => Java => Mensaje iniciado por: hack-4-life en 12 Septiembre 2011, 16:33 pm



Título: Validar un archivo txt que solo contenga 1 y 0,para dibujar una img?
Publicado por: hack-4-life en 12 Septiembre 2011, 16:33 pm
Hola,saludos XDs!
Bueno estoy tratando de solucionar esto,se trata de poder validar un archivo de texto que contiene 1 y 0 que conforman una imagen,donde de un programa java lo mando a llamar y me pinta la imagen en un jpanel,ahora lo que yo quiero hacer es poder validarlo que si esta en el archivo 0111*+´/ cualquier otro simbolo me marque error para esto trate de hacer lo siguiente:
Código
  1.  
  2.   import java.text.*;
  3.   import java.util.*;
  4.   import java.awt.*;
  5.   import java.awt.event.*;
  6.   import java.io.*;
  7.   import java.util.StringTokenizer;
  8.   import javax.swing.*;
  9.   import javax.swing.JFileChooser;
  10.  
  11.  
  12. // Clase
  13.    class dibujo extends Frame  {
  14.      static String cad=" ";
  15.      public static String dir="";
  16.  
  17.   // Función de control de la aplicación
  18.       public static void main( String[] gll ) throws IOException{
  19.  
  20.  
  21.  
  22.         try{
  23.  
  24.  
  25.            dir= JOptionPane.showInputDialog(null,"Escribe solo el nombre del archivo a ejecutar"+" ","micky.isc");
  26.  
  27.            int a=dir.length(),b=a-4;
  28.            String sub=dir.substring(b,dir.length()),sub2=".isc";
  29.            System.out.println(sub);
  30.  
  31.            if (sub.equals(sub2)){
  32.                  //compara imagen        
  33.               FileReader ab = new FileReader(dir);
  34.               BufferedReader cd = new BufferedReader(ab);
  35.  
  36.               int numlineas = 0,total=0;
  37.               String Cadena="";
  38.  
  39.               while ((Cadena = cd.readLine())!=null) {
  40.                  numlineas++;  
  41.                  cad += Cadena+"\n";
  42.  
  43. aqui en el while no se si desde aqui lovalido ya que me lee el archivo txt...
  44.               }
  45.  
  46.            }
  47.            else
  48.            {
  49.               JOptionPane.showMessageDialog(null, "Formato no Reconocido","Error",JOptionPane.ERROR_MESSAGE);
  50.               System.exit(0);
  51.            }
  52.  
  53.         }
  54.             catch (FileNotFoundException e){
  55.               e.printStackTrace();
  56.            }
  57.             catch (IOException d){
  58.               d.printStackTrace();
  59.            }
  60.  
  61.         new dibujo();
  62.      }
  63.  
  64.       public dibujo() {
  65.  
  66.         this.setTitle( "Dibujo" );
  67.         this.setSize( 350,350 );
  68.  
  69.         this.setVisible( true );
  70.  
  71.  
  72.  
  73.         this.addWindowListener(
  74.                new WindowAdapter() {
  75.                   public void windowClosing( WindowEvent evt ) {
  76.                     System.exit( 0 );
  77.                  }
  78.               } );
  79.      }
  80.  
  81.  
  82.       public void paint(Graphics g){
  83.  
  84.         g.translate( this.getInsets().left,this.getInsets().top );
  85.  
  86.         byte[] sep = cad.getBytes();
  87.         String acep="falso";
  88.  
  89.         System.out.println ("hacker    " +sep[2]);
  90.  
  91.  
  92.         if (cad.length() >= 1000){
  93.  
  94.            int x=0,y=0;
  95.            for(int i=0; i<sep.length; i++){
  96.  
  97.  
  98.  
  99.               if (sep[i] == 48 || sep[i] == 49  || sep[i]==10  ||sep[i]==255 )
  100.               {
  101.  
  102.                  if (sep[i]==48){
  103.                     g.setColor(Color.white);
  104.                     g.fillRect( x+70,y+50,1,1);
  105.                     x=x+1;
  106.                  }
  107.  
  108.                  if (sep[i] == 49){
  109.  
  110.                     g.setColor(Color.black);
  111.                     g.fillRect( x+70,y+50,1,1 );
  112.                     x=x+1;
  113.                  }
  114.  
  115.  
  116.  
  117.  
  118.                  if (sep[i]== 10){
  119.                     y=y+1;
  120.                     x=0;
  121.                  }
  122.  
  123.  
  124.               }////
  125.               else{  
  126.      /////////////////////
  127. aqui esta mi duda le digo que si existe cualquier digito o caracter de 48=1 y 49=0
  128. me mande error pero no entra en el ciclo mi pregunta es por que!            
  129.                  if (!(sep[i]==48)&&!(sep[i] == 49)){
  130.                  System.out.println("eror"+sep[i]);
  131.                  }
  132.  
  133.  
  134.  
  135.                  System.out.println("error");
  136.               }
  137.  
  138.  
  139.  
  140.            }  
  141.  
  142.         }
  143.         else
  144.         {
  145.            JOptionPane.showMessageDialog(null,"Tu Imagen no es la Correcta","Mensage",JOptionPane.INFORMATION_MESSAGE);
  146.            System.exit(0);
  147.  
  148.         }
  149.      }
  150.   }
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  

bueno espero me haya dado entender,espero me puedan ayudar...saludos...


Título: Re: Validar un archivo txt que solo contenga 1 y 0,para dibujar una img?
Publicado por: Valkyr en 23 Septiembre 2011, 13:58 pm
Sí dices que lo lees de un fichero de texto y que solo quieres que contenga 01*+´/ puedes hacerlo con expresiones regulares. Tan solo deberías leer el fichero, meterlo en un StringBuffer por ejemplo, y luego con la propia clase haces toString().matches("[^01*+´/]") sobre el StringBuffer y sí devuelve true es porque hay algún otro símbolo, si devuelve false es porque todo el fichero leido son los caracteres leídos.

Sí te interesa también puedes hacerlo con las clases Pattern y Matcher.

Saludos.