Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Prüfen ob eine Datei im Internet existiert

Mitglied: ppmk22

ppmk22 (Level 1) - Jetzt verbinden

24.04.2008, aktualisiert 08.01.2015, 9911 Aufrufe, 12 Kommentare

Hallo Forum, brauche mal Hilfe

Ich möchte per Java im Internet sehen ob deine Datei bzw. ein Bild da ist oder nicht.
Und im zweiten schritt abfragen welches Datum sie es hat.

Hier ist mein erster Codeschnipsel:
01.
package pruef_datei; 
02.
import java.io.File; 
03.
 
04.
public class Main { 
05.
 
06.
private static final String datei = "www.domain.tld/test_datei.txt"; 
07.
 
08.
    public static void main(String[] args) { 
09.
 
10.
        File bild = new File(datei); 
11.
        if (bild.exists())  
12.
13.
           System.out.println("Ja, gibt es"); 
14.
        } else  { 
15.
            System.out.println("Nein, gibt es nicht"); 
16.
        }  }  }
Mit einer Datei auf den lokalen System geht es, aber nicht im Internet.

Hat jemand eine Idee???

Gruß
Petra
Mitglied: thekingofqueens
24.04.2008 um 21:59 Uhr
Du willst also EINE Datei im GESAMTEN Internet suchen? Na dann mal viel Spaß.
Bitte warten ..
Mitglied: LeChuck
25.04.2008 um 09:00 Uhr
also wenn man sich den quellcode anguckt sieht man ja, dass er schon den genauen pfad angibt und überprüfen will ob die datei existiert. Das hat ja nichts mit "Suchen" zu tun.
Ich finde, wenn du schon auf einen Beitrag antwortest, dann solltest du dir wenigstens Gedanken machen.
Leider kann ich auch nicht weiter helfen, jedoch finde ich, dass das mal gesagt werden sollte und wenigstens hab ich mir den Beitrag GENAU durchgelesen.
Bitte warten ..
Mitglied: thekingofqueens
25.04.2008 um 09:16 Uhr
also wenn man sich den quellcode anguckt
sieht man ja, dass er schon den genauen pfad
angibt und überprüfen will ob die
datei existiert. Das hat ja nichts mit
"Suchen" zu tun.
Ich finde, wenn du schon auf einen Beitrag
antwortest, dann solltest du dir wenigstens
Gedanken machen.
Leider kann ich auch nicht weiter helfen,
jedoch finde ich, dass das mal gesagt werden
sollte und wenigstens hab ich mir den Beitrag
GENAU durchgelesen.

Ach du lieber Gott, was fällt mir nur ein. Danke für die Maßregelung.
Bitte warten ..
Mitglied: AndreasHoster
25.04.2008, aktualisiert 08.01.2015
Problem ist, daß der Zugriff über java.io.File eben nur auf direkt zugreifbare Dateien geht, also über lokale Dateien bzw. Dateien die über File-Protokolle wie SMB/CIFS (Windows-Shares) oder NFS (Unix-Mounts) zugänglich sind.
Im Internet wird üblicherweise HTTP verwendet, also muß man auch über HTTP versuchen die Datei zu holen.
Codeschnipsel:
01.
import java.net.URL; 
02.
import java.net.MalformedURLException; 
03.
import java.io.IOException; 
04.
 
05.
public class HTTPREAD { 
06.
    private static URL url; 
07.
 
08.
    public static void main(String[] args) { 
09.
        try { 
10.
            // Verbindung zur URL 
11.
            url = new URL("http:/URL"); 
12.
        } catch (MalformedURLException e) { 
13.
            e.printStackTrace();  
14.
15.
        // Diese Anfrage wirft eine java.net.ConnectException aus, wenn das Ziel der URL nicht existiert 
16.
        try { 
17.
            url.openStream().close(); 
18.
            System.out.println("Existiert"); 
19.
        } catch (java.net.ConnectException e) { 
20.
            System.out.println("Existiert nicht oder nicht zugreifbar");   
21.
        } catch (IOException e) { 
22.
            // Sonstiger Verbindungsfehler 
23.
            e.printStackTrace();   
24.
25.
26.
}
Bitte warten ..
Mitglied: ppmk22
25.04.2008 um 14:50 Uhr
Hallo Andreas vielen dank für die Antwort.

Leider bin ich in Sachen Java blutige Anfängerin. Wenn ich Deinen Code in Netbeans 6 einfüge, bekomme ich bei dem Teil "public class HTTPREAD {" die Meldung "cass HTTPREAD is public, should be declared in a file named HTTPREAD.java" Jetzt weiss ich nicht was ich da machen muss.
Bitte warten ..
Mitglied: AndreasHoster
25.04.2008, aktualisiert 08.01.2015
So wie mein Code war (und mache Zeichen zur Kommentierung hat hier das Forum rausgezogen) war es eine eigene Klasse und Java verlangt, daß der Dateiname des Sourcecodes und der Klassenname identisch ist.
Hier eine kurze Version als Methode, die man jeder Klasse hinzufügen kann:
01.
static boolean URLexists(java.lang.String URL) { 
02.
        java.net.URL url; 
03.
 
04.
        try { 
05.
            url = new URL(URL); 
06.
        } catch (MalformedURLException e) { 
07.
            return false; 
08.
09.
        try { 
10.
            url.openStream().close(); 
11.
            return true; 
12.
        } catch (IOException e) { 
13.
            return false; 
14.
15.
    }
Das gibt dann true oder false zurück, je nachdem ob er die Datei findet oder nicht, wobei Du nicht rausbekommst warum er die Datei nicht findet.
Kann man dann so aufrufen:
01.
       if(URLexists("www.domain.tld/test_datei.txt")) { 
02.
           System.out.println("Existiert"); 
03.
       } else { 
04.
          System.out.println("Existiert nicht"); 
05.
       }
Bitte warten ..
Mitglied: ppmk22
25.04.2008 um 16:00 Uhr
Hmm, geht schon wieder nicht

Nun bekomme ich bei

static boolean URLexists(java.lang.String URL) {

illigal start of expression

Hat das Forum da schon wieder was verschluckt? Warum macht es das?
Bitte warten ..
Mitglied: AndreasHoster
25.04.2008, aktualisiert 08.01.2015
Diesmal dürfte es nichts verschluckt haben, diesmal habe ich dran gedacht es als Code zu kennzeichnen.
Der Fehler ist, daß eine Methode natürlich außerhalb einer anderen Methode definiert werden muß.
Du hast vermutlich folgenden Aufbau
01.
public class Main { 
02.
... 
03.
public static void main(String[] args) { 
04.
... 
05.
static boolean URLexists(java.lang.String URL) { 
06.
....} 
07.
... 
08.
} hier Ende main 
09.
} hier Ende class 
10.
 
11.
Das geht natürlich nicht. Es muß so aussehen: 
12.
 
13.
public class Main { 
14.
... 
15.
public static void main(String[] args) { 
16.
... 
17.
} hier Ende main 
18.
static boolean URLexists(java.lang.String URL) { 
19.
....}  
20.
} hier Ende class
Bitte warten ..
Mitglied: ppmk22
25.04.2008, aktualisiert 08.01.2015
Es tut mir wirklich leid.

Hier ist jetzt mal der Code, den ich mit Deiner Hilfe versucht habe zum laufen zu bringen.

01.
package pruef_datei_im_www; 
02.
 
03.
import java.io.IOException; 
04.
import java.net.MalformedURLException; 
05.
import java.net.URL; 
06.
 
07.
public class Main { 
08.
 
09.
    public static void main(String[] args) { 
10.
         
11.
12.
    static boolean URLexists(java.lang.String URL) { 
13.
        java.net.URL url; 
14.
 
15.
        try { 
16.
            url = new URL(URL); 
17.
        } catch (MalformedURLException e) { 
18.
            return false; 
19.
20.
        try { 
21.
            url.openStream().close(); 
22.
            return true; 
23.
        } catch (IOException e) { 
24.
            return false; 
25.
26.
        if (URLexists("www.domain.tld/test_datei.txt")) { 
27.
            System.out.println("Existiert"); 
28.
        } else { 
29.
            System.out.println("Existiert nicht"); 
30.
31.
32.
}
Wo liegt den nun mein fehler?
Bitte warten ..
Mitglied: AndreasHoster
28.04.2008, aktualisiert 08.01.2015
In der Ablauflogik.
Hier mal der richtige Code:
01.
package pruef_datei_im_www; 
02.
 
03.
import java.io.IOException; 
04.
import java.net.MalformedURLException; 
05.
import java.net.URL; 
06.
 
07.
public class Main { 
08.
 
09.
    public static void main(String[] args) { 
10.
        if (URLexists("www.domain.tld/test_datei.txt")) { 
11.
            System.out.println("Existiert"); 
12.
        } else { 
13.
            System.out.println("Existiert nicht"); 
14.
        }         
15.
16.
    static boolean URLexists(java.lang.String URL) { 
17.
        java.net.URL url; 
18.
 
19.
        try { 
20.
            url = new URL(URL); 
21.
        } catch (MalformedURLException e) { 
22.
            return false; 
23.
24.
        try { 
25.
            url.openStream().close(); 
26.
            return true; 
27.
        } catch (IOException e) { 
28.
            return false; 
29.
30.
31.
}
Zur Erklärung der prinzipielle Ablauf in Java:
Die Java-Umgebung lädt die Klasse beim Start und ruft die Methode <public static void main> auf. Dort beginnt der Ablauf eines Java-Programms und endet auch dort.
Du hast die Abfrage in die Methode URLexists reingepackt, aber in der main nichts aufgerufen, deswegen macht Java auch nichts (weil main leer ist).
=> Aufruf der Methode muß in der main-Methode erfolgen!

Und zweiter Ablauflogikfehler: An der Stelle, an der Du das in der Methode URLexists reingeschrieben hast, würde es sowieso nie aufgerufen werden, da die Methode vorher mit return verlassen wird.
Bitte warten ..
Mitglied: ppmk22
29.04.2008, aktualisiert 08.01.2015
OK, vielen Dank für die Erklärung.

Aber richtig funktionieren tut es noch nicht.
Jetzt wir nur geprüft ob die Domain verfügbar ist.
Alles was hinter domain.tld ist egal.
Java sagt immer Existiert. Wenn man jetzt aber
domain.tld prüft kommt „Existiert nicht“.
Ist bestimmt nur eine Kleinigkeit die da fehlt, oder?
Bitte warten ..
Mitglied: AndreasHoster
30.04.2008, aktualisiert 08.01.2015
Das Programm funktioniert wie Designed, aber:
Es ist so programmiert, daß ich eine Fehlermeldung des Webservers erwarte, wenn die Datei nicht existiert/ich nicht zugreifen darf (HTTP Error 404 im Normalfall). So macht es auch mein Testwebserver gegen den ich das Programm getestet habe.
Wenn Du aber mal statt
01.
www.domain.tld/test_datei.txt
im Browser
01.
www.domain.tld/test_datei2.txt
eingibts (dieses Datei existiert nicht) gibt es keine Fehlermeldung, sondern es wird einfach die Suchseite angezeigt.
Dadurch kann das Programm eine Datei fehlerfrei lesen und meldet keinen Fehler. Ich wüsste aber auch nicht, wie ich da rausbekommen sollte, daß es die falsche Datei ist.

=> Wenn der Webserver auch bei nicht-existierenden Dateien Dateien zurückgibt, ist das ein Problem.
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Mit VBA prüfen, ob Tabellenblatt existiert

gelöst Frage von Anna2701VB for Applications9 Kommentare

Hallo zusammen, ich habe folgendes Problem: Ich prüfe in meinem Code, ob ein Tabellenblatt existiert und wenn es existiert ...

Microsoft Office

Email Adresse zu prüfen, ob diese noch existiert? VBA

Frage von thomas1972Microsoft Office1 Kommentar

Hallo, besteht per VBA aus Office heraus die Möglichkeit eine Email Adresse zu prüfen, ob diese noch existiert? Bei ...

Batch & Shell

Batch, CMD - Prüfen ob ein Dienst existiert, nicht läuft

Frage von RycoDePsycoBatch & Shell4 Kommentare

Hallo, habt Ihr eine Idee wie man über eine Batchdatei abfragen, ob ein Dienst in der Dienste-Übersicht vorhanden ist? ...

VB for Applications

Abfrage, ob Datei mit Variablem Wert existiert

gelöst Frage von AnrionVB for Applications12 Kommentare

Hallo Forum, Ich habe diesen Code: Jedoch funktioniert er nicht ganz wie er soll (bzw. gar nicht). Es soll ...

Neue Wissensbeiträge
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 14 SekundenHumor (lol)

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 1 StundeExchange Server2 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 1 TagErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 1 TagVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server38 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

Windows Server
Windows Server per Web auf Daten zugreifen und verwalten
Frage von matze2090Windows Server16 Kommentare

Hallo, ich würde gerne von außen auf meinem Windows Server zugreifen um auf meine Daten zu verwalten. Meine frage ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS15 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...