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:
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);
}
}
}