sun.io.MalformedInputException

Status
Nicht offen für weitere Antworten.
M

Mordin

Gast
hi leute ich habe ein problem mit meinen programm...
es soll die quelltexte von htmlseiten in einer txtdatei speichern und im anschluss vergleichen.
das speichern funktioniert jedoch beim vergleichen gibt er mir immer 0 fehler aus, was ja nich sein kann bei 2 unterschiedlichen seiten.
in der console schreibt er mir dann das hier hin:
"sun.io.MalformedInputException
Missing byte-order mark"

nun hab ich leider keine ahnung was er damit meint bzw wo ich ansetzen soll.

hier noch mal mein programm:

Code:
import inout.in;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;

import javax.swing.*;

public class HTMLEdit extends JFrame {

    private static final long serialVersionUID = 1L;

    private JPanel jContentPane = null;

    private JPanel tabellejPanel = null;

    private JPanel eingabejPanel = null;

    private JPanel buttonjPanel = null;

    private JPanel ebenejPanel = null;

    private JPanel prozessjPanel = null;

    private JTextField URL1jTextField = null;

    private JTextField URL2jTextField = null;

    private JProgressBar jProgressBar = null;

    private JButton startjButton = null;

    private JTextField ebenejTextField = null;

    /**
     * This method initializes tabellejPanel    
     *  
     * @return javax.swing.JPanel   
     */
    private JPanel getTabellejPanel() {
        if (tabellejPanel == null) {
            GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
            gridBagConstraints5.fill = GridBagConstraints.BOTH;
            gridBagConstraints5.gridy = 0;
            gridBagConstraints5.weightx = 1.0;
            gridBagConstraints5.weighty = 1.0;
            gridBagConstraints5.gridx = 0;
            GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
            gridBagConstraints4.fill = GridBagConstraints.BOTH;
            gridBagConstraints4.gridy = 0;
            gridBagConstraints4.weightx = 1.0;
            gridBagConstraints4.weighty = 1.0;
            gridBagConstraints4.gridx = 0;
            tabellejPanel = new JPanel();
            tabellejPanel.setLayout(new GridBagLayout());
            tabellejPanel.add(getJTextPane1(), gridBagConstraints5);            
        }
        return tabellejPanel;
    }

    /**
     * This method initializes eingabejPanel    
     *  
     * @return javax.swing.JPanel   
     */
    private JPanel getEingabejPanel() {
        if (eingabejPanel == null) {
            GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
            gridBagConstraints1.fill = GridBagConstraints.VERTICAL;
            gridBagConstraints1.weightx = 1.0;
            GridBagConstraints gridBagConstraints = new GridBagConstraints();
            gridBagConstraints.fill = GridBagConstraints.VERTICAL;
            gridBagConstraints.gridy = 0;
            gridBagConstraints.weightx = 1.0;
            gridBagConstraints.gridx = 0;
            eingabejPanel = new JPanel();
            eingabejPanel.setLayout(new GridBagLayout());
            eingabejPanel.setPreferredSize(new Dimension(400, 40));
            eingabejPanel.add(getURL1jTextField(), gridBagConstraints);
            eingabejPanel.add(getURL2jTextField(), gridBagConstraints1);
        }
        return eingabejPanel;
    }

    /**
     * This method initializes buttonjPanel 
     *  
     * @return javax.swing.JPanel   
     */
    private JPanel getButtonjPanel() {
        if (buttonjPanel == null) {
            buttonjPanel = new JPanel();
            buttonjPanel.setLayout(new GridBagLayout());
            buttonjPanel.setPreferredSize(new Dimension(400, 40));
            buttonjPanel.add(getStartjButton(), new GridBagConstraints());
        }
        return buttonjPanel;
    }

    /**
     * This method initializes ebenejPanel  
     *  
     * @return javax.swing.JPanel   
     */
    private JPanel getEbenejPanel() {
        if (ebenejPanel == null) {
            GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
            gridBagConstraints3.fill = GridBagConstraints.VERTICAL;
            gridBagConstraints3.gridy = 0;
            gridBagConstraints3.weightx = 1.0;
            gridBagConstraints3.gridx = 0;
            ebenejPanel = new JPanel();
            ebenejPanel.setLayout(new GridBagLayout());
            ebenejPanel.setPreferredSize(new Dimension(49, 50));
            ebenejPanel.add(getEbenejTextField(), gridBagConstraints3);
        }
        return ebenejPanel;
    }

    /**
     * This method initializes prozessjPanel    
     *  
     * @return javax.swing.JPanel   
     */
    private JPanel getProzessjPanel() {
        if (prozessjPanel == null) {
            GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
            gridBagConstraints2.gridx = 0;
            gridBagConstraints2.gridy = 0;
            prozessjPanel = new JPanel();
            prozessjPanel.setLayout(new GridBagLayout());
            prozessjPanel.setPreferredSize(new Dimension(49, 50));
            prozessjPanel.add(getJProgressBar(), gridBagConstraints2);
        }
        return prozessjPanel;
    }

    /**
     * This method initializes URL1jTextField   
     *  
     * @return javax.swing.JTextField   
     */
    private JTextField getURL1jTextField() {
        if (URL1jTextField == null) {
            URL1jTextField = new JTextField();
            URL1jTextField.setPreferredSize(new Dimension(150, 20));
        }
        return URL1jTextField;
    }

    /**
     * This method initializes URL2jTextField   
     *  
     * @return javax.swing.JTextField   
     */
    private JTextField getURL2jTextField() {
        if (URL2jTextField == null) {
            URL2jTextField = new JTextField();
            URL2jTextField.setPreferredSize(new Dimension(150, 20));
        }
        return URL2jTextField;
    }

    /**
     * This method initializes jProgressBar 
     *  
     * @return javax.swing.JProgressBar 
     */
    private JProgressBar getJProgressBar() {
        if (jProgressBar == null) {
            jProgressBar = new JProgressBar();
            jProgressBar.setPreferredSize(new Dimension(18, 280));
            jProgressBar.setMaximum(100);
            jProgressBar.setMinimum(0);
            jProgressBar.setValue(0);
            jProgressBar.setStringPainted(true);
        }
        return jProgressBar;
    }

    /**
     * This method initializes startjButton 
     *  
     * @return javax.swing.JButton  
     */
    private JButton getStartjButton() {
        if (startjButton == null) {
            startjButton = new JButton();
            startjButton.setPreferredSize(new Dimension(64, 30));
            startjButton.setMnemonic(KeyEvent.VK_UNDEFINED);
            startjButton.setText("Start");
            startjButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    startjButtonGedrueckt(e);
                }
            });
        }
        return startjButton;
    }
    
    public void startjButtonGedrueckt(ActionEvent e) {
        leseSeite();
        jTextPane1.setEditable(false);      
    }
    
    /**
     * This method initializes ebenejTextField  
     *  
     * @return javax.swing.JTextField   
     */
    private JTextField getEbenejTextField() {
        if (ebenejTextField == null) {
            ebenejTextField = new JTextField();
            ebenejTextField.setPreferredSize(new Dimension(40, 20));
            ebenejTextField.setText("Ebene");           
        }
        return ebenejTextField;
    }

    /**
     * This method initializes jTable   
     *  
     * @return javax.swing.JTable   
     */ 
    public String URL; 

    /**
     * @param args
     */
    
    public int leseUrl1(String url1, int ebene, int j) {         
          // Eingabe der Internetseite        
          URL = url1;         
          String zeile = null; 
          String datei = ""; 
          try { 
             // erstellen der URL
             URL myurl = new URL(URL); 
             try { 
                // Zugriff auf URL und auslesen dieser bis zeile gleich null
                BufferedReader lies = new BufferedReader(new InputStreamReader(myurl.openStream())); 
                while ((zeile = lies.readLine()) != null) { 
                   datei += zeile; 
                } 
             } 
             catch (IOException ex2) { 
                 jTextPane1.setText("FEHLER beim Zugriff: " + ex2.getMessage()); 

             } 
          } 
          catch (MalformedURLException ex) { 
              jTextPane1.setText("FEHLER bei der URL " + ex.getMessage()); 
          } 
          
          // speichern des Quelltextes in einer Textdatei
          Writer fw = null; 
          
          try 
          { 
            // Pfad und Eingabe des Dateinamens
            fw = new FileWriter( "C:\\Dokumente und Einstellungen\\mleh\\Eigene Dateien\\URL1\\" + j + ".txt"); 
            fw.write(datei); 
          } 
          catch ( IOException e ) { 
              jTextPane1.setText( "Konnte Datei nicht erstellen" ); 
          } 
          finally { 
            if ( fw != null ) 
              try { fw.close(); } catch ( IOException e ) { } 
          }
          
          
          // Zugriff auf gespeicherten Quelltext und auslesen der Links       
          ebene = ebene - 1;              
          Vector links = new Vector(getLinks(datei));         
          if (ebene <= 0) {       
              } else { 
          for (int i=0; i<links.size(); i++) {
               url1 = (String) links.get(i);
               j = j+1;            
               j = leseUrl1(url1, ebene, j);               
          }
          }       
          return j;     
    }
 
 public int leseUrl2(String url2, int ebene, int j) {         
          // Eingabe der Internetseite        
          URL = url2;         
          String zeile = null; 
          String datei = ""; 
          try { 
             // erstellen der URL
             URL myurl = new URL(URL); 
             try { 
                // Zugriff auf URL und auslesen dieser bis zeile gleich null
                BufferedReader lies = new BufferedReader(new InputStreamReader(myurl.openStream())); 
                while ((zeile = lies.readLine()) != null) { 
                   datei += zeile; 
                } 
             } 
             catch (IOException ex2) { 
                 jTextPane1.setText("FEHLER beim Zugriff: " + ex2.getMessage()); 

             } 
          } 
          catch (MalformedURLException ex) { 
              jTextPane1.setText("FEHLER bei der URL " + ex.getMessage()); 
          } 
          
          // speichern des Quelltextes in einer Textdatei
          Writer fw = null; 
          
          try 
          { 
            // Pfad und Eingabe des Dateinamens
            fw = new FileWriter( "C:\\Dokumente und Einstellungen\\mleh\\Eigene Dateien\\URL2\\" + j + ".txt"); 
            fw.write(datei); 
          } 
          catch ( IOException e ) { 
              jTextPane1.setText( "Konnte Datei nicht erstellen" ); 
          } 
          finally { 
            if ( fw != null ) 
              try { fw.close(); } catch ( IOException e ) { } 
          }
          
          
          // Zugriff auf gespeicherten Quelltext und auslesen der Links       
          ebene = ebene - 1;          
          Vector links = new Vector(getLinks(datei));             
          if (ebene <= 0) {                   
              } else { 
          for (int i=0; i<links.size(); i++) {
               url2 = (String) links.get(i);
               j = j+1;            
               j = leseUrl2(url2, ebene, j);    
          }
          }          
          return j;       
    }
    
    public void leseSeite() {
           int b;
           int j = 0;
           int k = Integer.parseInt(ebenejTextField.getText());
           String url1 = URL1jTextField.getText();
           String url2 = URL2jTextField.getText();
           int x = leseUrl1(url1, k, j);
           int y = leseUrl2(url2, k, j);          
           if (x<=y)  {
               b = x;
           } else {
               b = y;
           }
           String text = "";
           int fehler;
           for (int w=0; w<=b; w++)  {                 
               String s = in.readFile("C:\\Dokumente und Einstellungen\\mleh\\Eigene Dateien\\URL1\\" + w + ".txt");
               String t = in.readFile("C:\\Dokumente und Einstellungen\\mleh\\Eigene Dateien\\URL2\\" + w + ".txt");           
               fehler = Vergleich(s, t);
               //Ausgabe der Anzahl der gefundenen Fehler
               jTextPane1.setText(text + "Datei: " + w + ".txt   " + "Fehler: " + fehler + "\n");
               text = jTextPane1.getText();             
           }       
       }
    
    public static final String REGEX = "(http[s]?|ftp)://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?";

    private JTextPane jTextPane1 = null; 
       
       public static Vector getLinks(String input) { 
           Pattern p = Pattern.compile(REGEX, Pattern.CASE_INSENSITIVE); 
           Matcher m = p.matcher(input); 
           Vector items = new Vector(); 
           while (m.find()) { 
               items.addElement(m.group()); 
           } 
           return items; 
       } 
    
    public static int Vergleich (String s, String t) { 
           if (s == null || t == null) { 
             throw new IllegalArgumentException("Strings darf nicht null sein"); 

           } 
           
           int n = s.length(); 
           int m = t.length();  
                
           if (n == 0) { 
             return m; 
           } else if (m == 0) { 
             return n; 
           } 
           int p[] = new int[n+1];  
           int d[] = new int[n+1];  
           int _d[];  
          
           int i;  
           int j;  
           char t_j; 
           int cost; 

           for (i = 0; i<=n; i++) { 
              p[i] = i; 
           }            
           for (j = 1; j<=m; j++) { 
              t_j = t.charAt(j-1); 
              d[0] = j;             
              for (i=1; i<=n; i++) { 
                 cost = s.charAt(i-1)==t_j ? 0 : 1;                           
                 d[i] = Math.min(Math.min(d[i-1]+1, p[i]+1),  p[i-1]+cost);  
              }  
              _d = p; 
              p = d; 
              d = _d; 
           } 
           return p[n]; 
         } 
    
    /**
     * This method initializes jTextPane1   
     *  
     * @return javax.swing.JTextPane    
     */
    private JTextPane getJTextPane1() {
        if (jTextPane1 == null) {
            jTextPane1 = new JTextPane();
        }
        return jTextPane1;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                HTMLEdit thisClass = new HTMLEdit();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
                System.getProperties().setProperty("proxySet","true");
                System.getProperties().setProperty("proxyHost","iproxy");
                System.getProperties().setProperty("proxyPort","8080");
            }
        });
    }

    /**
     * This is the default constructor
     */
    public HTMLEdit() {
        super();
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(500, 400);
        this.setContentPane(getJContentPane());
        this.setTitle("JFrame");
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getTabellejPanel(), BorderLayout.CENTER);
            jContentPane.add(getEingabejPanel(), BorderLayout.NORTH);
            jContentPane.add(getButtonjPanel(), BorderLayout.SOUTH);
            jContentPane.add(getEbenejPanel(), BorderLayout.WEST);
            jContentPane.add(getProzessjPanel(), BorderLayout.EAST);
        }
        return jContentPane;
    }
    
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == KeyEvent.VK_ENTER)
        {            
            leseSeite();
            jTextPane1.setEditable(false);    
        }
     }

}
 
M

Mordin

Gast
sorry für die späte antwort aber du könntest recht haben bzw. hast recht :wink:
aber da er die html-seite richtig einliest und diese auch gespeichert wird gehe ich davon aus, das er die exception beim vergleich bzw beim einlesen der txtdatei wirft in zeile 363/364...
hab im moment je doch kein plan wie ich das fixen soll ???:L
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben