Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
import java.io.*;
import java.net.*;
public class HttpRequest
{
public static void main(String[] args) throws IOException
{
BufferedReader br0 = new BufferedReader(new InputStreamReader(System.in));
String userinput = "";
String read = "";
String text ="";
char[] name;
String filename= "";
URL url;
int i;
int j=0;
System.out.print("\nIhr Link:\thttp://");
userinput = "http://"+br0.readLine();
url = new URL(userinput);
name = new char[userinput.length()+1];
i = userinput.length();
while(name[i]!='/' && i!=0)
{
i--;
name[i] = userinput.charAt(i);
System.out.println(name[i]);
}
for(i=0; i<userinput.length(); i++)
{
if(name[i]=='/')
{
i++;
}
filename = filename + name[i];
}
System.out.println(filename);
BufferedReader br1 = new BufferedReader(new InputStreamReader(url.openStream()));
while((read = br1.readLine()) != null)
{
j++;
System.out.println(i+":\t"+read);
text = text+read;
}
FileOutputStream fileOut = new FileOutputStream(filename);
fileOut.write(text.getBytes(), 0, text.length());
fileOut.close();
}
}
ich hab da nen problem er zeigt mir an das ich bei dem FileOutputStreamer nen fehler mim dateinamen hätte abba komischer weise funktioniert die Ausgabe des Dateinamens richtig
Das Proggie soll ne datei von einer beliebigen HP laden und speichern können
Exception in thread "main" java.io.FileNotFoundException: index.php (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
at HttpRequest.main(HttpRequest.java:45)
FileNotFoundException - if the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason
ja bei dem Programm isses ja so der user tippt den link an den er runterladen will, das Programm sucht dann beim link von hinten ab den dateinamen und hört auf sobald ein / kommt
un das speichert er in filename und gibts dann dem FileOutputStream
un ich hab bisher imma mit dateien ausgetestet die exisitieren
Nein läuft imma nochned richtig
hier is mal die Ausgabe mit sämtlichen Kontrollausgaben (den Quellcode kann es öffnen nur ned speichern)
Code:
Ihr Link: [url]http://127.0.0.1/index.php[/url]
p
h
p
.
x
e
d
n
i
/
index.php
26: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
26: <html xmlns="http://www.w3.org/1999/xhtml">
26: <head>
26: <link rel="stylesheet" href="src/style.css" />
26: <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
26: <title>Verwaltung</title>
26: </head>
26:
26: <frameset cols="10%, *" border="4" style="border-style:dotted">
26: <frame src="src/links.php" name="navi" noresize="noresize"/>
26: <frame src="src/main.php" name="main" noresize="noresize"/>
26: </frameset><noframes></noframes>
26: </html>
Die Datei index.php existiert nicht!
timo@timo-laptop:~/Desktop$
ich hab kein plan was nun noch verändert werden muss wie man in der zeile über zeile 26 sieht schreibt er die datei auch richtig hin nur übernimmt sie nicht
kann es sein das ich die variable filename noch mal in eine andere form casten muss weil komischerweise kommt er beispielsweise mit FileOutputStream("seite.html"); zurecht nur ned mit dem filename^^
also von daher ich hab auf jeden fall schreib und lese rechte hatte ja schließlich auch schon vorher mal ne datei aufn desktop erstellt mit dem programm alledings hab ich da den dateinamen festgelegt und ned automatisch erstellen lassen
dein pfad ist definitiv nicht voll qualifiziert und schreibrechte auf / hast du eben nicht!
du willst in /index.php schreiben und das darfst du nun mal nicht.
das stimmt nicht! ich hab das programm so gemacht, dass der / am anfang weg gemacht wird demnach isses ne normale datei und kein Pfad.
un wenn ich als datei anstatt filename beispielsweise seite.html eingebe dann funzt das.
ich hab extra um zu überprüfen, dass auch wirklich kein / davor steht eine ausgabe nochmal reingesetzt bevor ich es schreiben lies sodass ich im terminal nochmal gezeigt bekomme wie die datei bzw der pfad ist.
Code:
import java.io.*;
import java.net.*;
public class HttpRequest
{
public static void main(String[] args) throws IOException
{
BufferedReader br0 = new BufferedReader(new InputStreamReader(System.in));
String userinput = "";
String read = "";
String text ="";
char[] name;
String filename= "";
URL url;
int i;
int j=0;
System.out.print("\nIhr Link:\thttp://");
userinput = "http://"+br0.readLine();
url = new URL(userinput);
name = new char[userinput.length()+1];
i = userinput.length();
while(name[i]!='/' && i!=0)
{
i--;
name[i] = userinput.charAt(i);
if(name[i]=='/')
{
i++;
break;
}
System.out.println(name[i]);
}
for(i=0; i<userinput.length(); i++)
{
if(name[i]=='/' || name[i]==' ') //durch diesen vorgang wird ein / im dateinamen weggelassen genauso
//leerzeichen weiter oben im Programm wird auch schon gefiltert und ausgegeben
{
i++;
}
filename = filename + name[i];
}
;
System.out.println(filename); //Kontroll ausgabe
BufferedReader br1 = new BufferedReader(new InputStreamReader(url.openStream()));
while((read = br1.readLine()) != null)
{
j++;
System.out.println(i+":\t"+read);
text = text+read;
}
File file = new File(filename);
if(file.exists())
{
OutputStream fileOut = new FileOutputStream(filename);
fileOut.write(text.getBytes(), 0, text.length());
fileOut.close();
} else
{
System.out.println("Die Datei"+filename+"existiert nicht!");
}
}
}
Hier erneut das Programm mit entsprechenden kommentaren
und hier kommt die Ausgabe (wo auch die Datei richtig benannt wird
Code:
timo@timo-laptop:~/Desktop$ javac HttpRequest.java
timo@timo-laptop:~/Desktop$ java HttpRequest
Ihr Link: [url]http://127.0.0.1/index.php[/url]
p
h
p
.
x
e
d
n
i
index.php
26: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
26: <html xmlns="http://www.w3.org/1999/xhtml">
26: <head>
26: <link rel="stylesheet" href="src/style.css" />
26: <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
26: <title>Verwaltung</title>
26: </head>
26:
26: <frameset cols="10%, *" border="4" style="border-style:dotted">
26: <frame src="src/links.php" name="navi" noresize="noresize"/>
26: <frame src="src/main.php" name="main" noresize="noresize"/>
26: </frameset><noframes></noframes>
26: </html>
Die Dateiindex.phpexistiert nicht!
timo@timo-laptop:~/Desktop$
Benutzt du zufällig XAMPP? Dann muss der Link http://127.0.0.1/xampp/index.php lauten. (Ach ja, und ist Apache überhaupt gestartet?)
Übrigens weiß ich nicht, wie die anderen Nutzer das sehen, aber ich wäre dir sehr verbunden, wenn du in normalem Deutsch und nicht in diesem Pseudo-WWW-Slang („abba“, “imma“ „ned“, „isses“) schreiben würdest, es macht deine Postings nämlich schlecht lesbar.
auf windows könnten es file-locks sein. und die aussage dass es "nicht imma" funktioniert impliziert daß es hier und da mal geht. wenn du aber sagst daß es mit nem anderen file-namen funktioniert deutet daß eigentlich ganz klar auf irgendein fehlendes recht oder ein lock hin.
da du dich konsequent weigerst den tatsächlichen physikalischen pfad der datei anzugeben habe ich langsam die vermutung daß du auf "http://127.0.0.1/index.php" schreiben willst was so aber nicht geht!
dann schneidest du von der URL alles ab bis "/index.php" übrigbleibt und versuchst da rein zu schreiben.
kann nicht funktionieren!
du brauchst den absoluten physikalischen pfad auf der platte von deiner index.php!
steht aber schon viel weiter oben irgendwo. wenn du das mal probieren würdest............
es ist nur die datei die er bereits ausgegeben hat, nicht die die er jetzt runterladen will.
er will scheinbar die .php-datei ändern damit sie beim nächsten aufruf etwas anderes macht. kann ja ok sein.
es ist nur der pfad falsch.