Laden...

Text von einer Url auslesen

Erstellt von Ayke vor 17 Jahren Letzter Beitrag vor 17 Jahren 5.316 Views
Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren
Text von einer Url auslesen

Ich habe folgendes Problem : Ich möchte gerne eine Text datei von einer url auslesen. Áber der Text soll nur gelesen werden wenn er sich verändert hat oder was hinzugekommen ist. Brauche Hilfe (Vorschläge wie ich mein Code besser gestalen könnte wären auch nett)

private void timer1_Tick(object sender, EventArgs e)
        {


            string httpadress;
            httpadress = textBox1.Text;
            try
            {
                int a = 6;
                int b = 5; 
                int c = 4;
                int d = 3;
                int f = 2;
                int g = 1;
                int h = 0;
                WebClient client = new WebClient();
                {
                    Stream data = client.OpenRead(httpadress + @"/err_log.txt");

                    StreamReader reader = new StreamReader(data);
                    string str = "";
                    str = reader.ReadLine();
                    while (str != null)
                    {
                        a++;
                        if (a == 7)
                        {
                            str = reader.ReadLine();
                        }


                        b++;
                        if (b == 7)
                        {
                            str = reader.ReadLine();
                        }

                        c++;
                        if (c == 7)
                        {
                            str = reader.ReadLine();
                        }

                        d++;
                        if (d == 7)
                        {
                            str = reader.ReadLine();
                            richTextBox1.Text += (str + "\n");
                        }

                        f++;
                        if (f == 7)
                        {
                            str = reader.ReadLine();
                            richTextBox1.Text += (str + "--------------------------------------------------------------------------------------");

                        }

                        g++;
                        if (g == 7)
                        {
                            str = reader.ReadLine();
                        }

                        h++;
                        if (h == 7)
                        {
                            str = reader.ReadLine();
                        }
                        
                    }

                    data.Close();
                }


                
            }
            catch (WebException exp)
            {
                MessageBox.Show(exp.Message, "Exception");
                
            }

        }
2.223 Beiträge seit 2005
vor 17 Jahren

moin,

falls ich das richtig sehe, werden nur die ersten 8 zeilen gelesen aber nur mit d und f wird etwas gemacht

warum machste das nicht so?



str = reader.ReadLine();
                        d++;
                        if (d == 7)
                        {
                            str = reader.ReadLine();
                            richTextBox1.Text += (str + "\n");
                        }

                        f++;
                        if (f == 7)
                        {
                            str = reader.ReadLine();
                            richTextBox1.Text += (str + "--------------------------------------------------------------------------------------");

                        }

Ich denke mal das das nicht das ist was du willst

den try catch würde ich nicht so früh ansetzten

und ich denke deine while schleife sollte auch ne andere bedingung bekommen

nur laden wenn etwas verändert wurde
ausser an der grösse der datei kannste es nicht fest mache ob sich was verändert hat
solange du sie nicht runtergeladen hast (und ob du die größe von dort auslesen kannst weiß ich jetzt nicht genau)
also immer laden und vom programm vergleichen lassen
(es gibt aber immer andere wege (extra datei mit einem Timestamp auf dem server erstellen lassen und immer die zuerst lesen wenn timestamp neuer dann lesen wenn timestamp gleich dann nicht lesen)

mfg

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Danke für deine guten ratschlage 👍 aber wie ist das mit der grösse auslesen möglich da ich keine komplizierte anwendung machen möchte

Please Help ?(

S
1.047 Beiträge seit 2005
vor 17 Jahren

hab mal versucht deinen code zu verbessern, dabei hab ich festgesteltl das du ein paar sehr seltsame sachen machst... leider hast du ja nicht gesagt was du bezweckst drum hab ich mal 2 varianten

verbesserte version: dabei ist mir aufgefallen das du einmal die 1. zeile weg schmeißt da in der schleife am anfang nochmal gelesen wird. gewollt?
zum anderen merkst du dir nicht die vorherig gelesenen zeichen.

private void timer1_Tick(object sender, EventArgs e) {
	string httpadress = textBox1.Text;
	try {
		WebClient client = new WebClient();
		Stream data = client.OpenRead(httpadress + @"/err_log.txt");
		StreamReader reader = new StreamReader(data);
		
		string str = reader.ReadLine();
		int i=1;
		while (str != null && i<=7) {			
			str = reader.ReadLine();
			
			if (i == 4) {
				richTextBox1.Text += (str + "\n");
			}

			if (i == 5) {
				richTextBox1.Text += (str + "--------------------------------------------------------------------------------------");
			}
			i++;
		}
		data.Close();
	} catch (WebException exp) {
		MessageBox.Show(exp.Message, "Exception");
	}
}

nun meine etwas abgewandte:
ich vermute mal du wolltest die ersten 7 zeilen einer datei einlesen wobei nach der 4. ein extra zeilenumbruch rein soll und nach der 5. ein paar trennstriche
am ende soll alles in einer richtextbox ausgegeben werden.

dann würde das ganze so hier aussehen:


private void timer1_Tick(object sender, EventArgs e) {
	string httpadress = textBox1.Text;
	
	try {
		WebClient client = new WebClient();
		Stream data = client.OpenRead(httpadress + @"/err_log.txt");
		StreamReader reader = new StreamReader(data);
		
		string line = "";
		string content = "";
		for(int i=1; i<=7; i++) {
			line = reader.ReadLine();
			if(line==null) {
				break;
			}
			content += line;			
			if (i == 4) {
				content += "\n\r";				
			}
			if (i == 5) {
				content += "--------------------------------------------------------------------------------------";
			}
		}
		data.Close();
		richTextBox1.Text = content;
	} catch (WebException exp) {
		MessageBox.Show(exp.Message, "Exception");
	}
}

vielleicht kannst du ja mal verraten was du bezwecken wolltest mit dem code

L
497 Beiträge seit 2006
vor 17 Jahren

Kompletten Stream in einen StringBuilder lesen, die Länge abfragen und mit der gespeicherten Länge vom letzten Auslesen vergleichen.

Das würde ich jetzt als nicht so kompliziert bezeichnen, hat aber auch das Problem, dass, wenn die Datei im Web zwar vom Inhalt aber nicht von der Länge geändert wurde, diese Methode versagt.
Wenn Du die Datei selber auch schreibst, dann wäre es besser, einen TimeStamp direkt in die Datei (z.B. als Kommetar) zu schreiben und diesen in Deinem Programm auszulesen und zu vergleichen. Oder der TimeStamp in externer Datei wie schon genannt.

P.S.: Du hast ja schon wieder nur 5 Stunden geschlafen, oder machst Du immer mittags Siesta? 8)

P.S. 2: Ich habe Deinen Code nicht so ganz gerafft, aber ich habe so die starke Vermutung, dass Dir statt den Variablen a - g eine einzige reichen würde. Die erhöhst Du, sobald Du eine Zeile gelesen hast und verwendest ein switch, um bei Zeile 4 was andres zu machen als bei Zeile 5 usw.

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Ich hab überhaupt nit geschlafen und mittags schlaf ich auch nicht 🙂
das was du mit den schwich und so gesagt hast versteh ich nicht kanst du mir das als code kurz schrieben ? wäre echt nett

Und Danke ür die verbesserung 8o 😁 (Was ich mit den Code bezwecken will : Ich will von einer Textdatei 2 Zeilen auslesen und die Text datei wird regelmasssig durch eine andre mit andre Zeichen ersetzt.)

z.b diese

Blublub
Blalalaaaaa
Blubbbbbbb

Wichtig+++++++++++++
Wichtig+++++++++++++
Blub Blub Bla Bla

Diese ist immer gleich Formatiert, nur der Inhalt verändert sich

S
1.047 Beiträge seit 2005
vor 17 Jahren

Ich will von einer Textdatei 2 Zeilen auslesen und die Text datei wird regelmasssig durch eine andre mit andre Zeichen ersetzt. ah ok, dann nehm meine obere variante

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Hab noch eine Letzte Frage unzwa wie kann ich ein string auf einen andren weg in eine textbox speichern, damit ich ihn beim nachsten timer start abrufen kann ?(

S
1.047 Beiträge seit 2005
vor 17 Jahren

ich versteh weder die frage noch das problem so richtig...

du kansnt den string auch in einem attribut zwischenspeichern oder halt später einfach wieder abrufen

string text = richtextbox1.Text;

was genau wilslt du denn erreichen?

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

also wenn ich zumbeispiel in einer if anweisung bin kann ich ja die werte die dort drin gespeichert wurden nicht mehr in andre code breichen auslesen. der einzige weg führt mich dan über eine textbox das zwischen zu speichern

L
497 Beiträge seit 2006
vor 17 Jahren

Original von Ayke
Ich hab überhaupt nit geschlafen und mittags schlaf ich auch nicht 🙂

Na, dann hat man auch mehr Zeit zum C# lernen... 🙂

Also bzgl. switch: Wenn Du viele ifs hast, die alle die gleiche Variable prüfen und diese Variable vom Typ int, char oder ähnlichem ist, dann kannst Du aus:


if (i == 1) bla;
else if (i == 2) blub;
else if (i == 3) yippieh;
....
else if (i == 1000) jetzt reicht's;
else wenn nix zutrifft;

folgendes machen


switch (i) {
  case 1: bla; break;
  case 2: blub; break;
  case 3: yippieh; break;
  ...
  case 1000 jetzt reicht's; break;
  default: wenn nix zutrifft; break;
}

Angenommen, i ist 1000, dann muss beim oberen Teil jedes einzelne if abgeprüft werden. Bei der Variante mit switch wird direkt zum jeweiligen case gesprungen. Das ist in Deinem Fall nicht wirklich nötig, wenn Du nur zwei ifs hast, deshalb ist die Variante von sheitman vorzuziehen, wenn Du aber so viele ifs hast wie bei Deiner ursprünglichen Version, dann solltest Du switch verwenden. Aber dazu brauchst Du - wie gesagt - genau eine Variable auf die Du prüfen kannst und nicht die acht verschiedenen aus Deinem Quellcode von oben.
Siehe auch Wann switch-case wann if-else

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

L
497 Beiträge seit 2006
vor 17 Jahren

Original von Ayke
also wenn ich zumbeispiel in einer if anweisung bin kann ich ja die werte die dort drin gespeichert wurden nicht mehr in andre code breichen auslesen. der einzige weg führt mich dan über eine textbox das zwischen zu speichern

Da sind wir wieder bei den Grundlagen. Diesmal wäre der Berich, den Du Dir anschauen müsstest, Gültigkeit und Sichtbarkeit von Variablen.

bei:

{
  String s = "bla";
}

// s ist nicht mehr definiert

ist s außerhalb der geschweiften Klammern nicht mehr gültig. Dabei ist es egal, ob vor den Klammern noch ein if (i==3) steht oder ein public void meineFunktion(int x). Es sind immer die geschweiften Klammern, die einen Gültigkeitsbereich festlegen.

Wenn Du Deine Variable jetzt außerhald der geschweiften Klammern anlegst, dann kannst Du innerhalb der Klammern einen Wert zuweisen und dieser ist dann auch außerhalb weiterhin sichtbar. Wenn Du also Deine String-Variable zum zwischenspeichern der Werte ungefähr an der Stelle definierst, wo Du auch die Textboxen definierst, dann behält sie auch ihren Wert, wenn das if verlassen wurde. Mit obigen (vereinfachten Beispiel):

String s = "";
{
  s = "bla";
}

// s hat auch hier noch den Wert bla

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

S
1.047 Beiträge seit 2005
vor 17 Jahren

Original von Ayke
also wenn ich zumbeispiel in einer if anweisung bin kann ich ja die werte die dort drin gespeichert wurden nicht mehr in andre code breichen auslesen. der einzige weg führt mich dan über eine textbox das zwischen zu speichern

das is so nicht richtig

du mußt den gültigkeistbereich betrachten

beispiel:


class Test {
    string someString; //von überall in der klasse zugreifbar

    void someMethode(int someParameter) {
        //parameter überall innerhalb der methode verfügbar
        string y = "ein anderer string"; //überall in der methode verfügbar
        if(someParameter==1) {
            string z = "ein string"; //nur innerhalb dises (if) blockes verfügbar
            ...
        }
        Console.WriteLine(z); //geht nicht da z nur im if-Block verfügbar
        Console.WriteLine(someParameter); //geht
        Console.WriteLine(y); //geht
        Console.WriteLine(someString); //geht
    }

    void someOtherMethod() {
        Console.WrieLine(someString); //geht
    }
}

du müßtest die also ein attribut erstellen (im beispiel wäre someString soetwas) und dem diesen wert zuweisen
deine richedittexbox ist ja auch ein attribut, darum funktioniert das auch mit der

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

danke an alle biggg thx 👍 👍 👍 👍

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Ich krieg das einfach nicht hin was hab ich falsch gemacht ??? Ich kann aus irgendeinen grund kein ! bei if (temp1 == temp3) setzen. bei den Code müsste das Programm nun einglich das selbe tun wie vorher aber nun gibt es den Text nur einmal aus auchw wenn ich den text auf der url verändere.

        private void timer2_Tick(object sender, EventArgs e)
        {
            string httpadress = textBox1.Text;
            string temp3 = ("");
            string temp4 = ("");

            try
            {
                WebClient client = new WebClient();
                Stream data = client.OpenRead(httpadress + @"/err_log.txt");
                StreamReader reader = new StreamReader(data);
                
                string str = reader.ReadLine();
                int i = 1;
                

                while (str != null && i <= 7)

                {
                    str = reader.ReadLine();

                    if (i == 4)
                    {
                        temp3 = str;
                    }

                    if (i == 5)
                    {
                        temp4 = str;
                    }
                    i++;
                }
                data.Close();
            }
            catch (WebException exp)
            {
                MessageBox.Show(exp.Message, "Exception");
            }
        }



        private void timer1_Tick(object sender, EventArgs e)
        {

            string httpadress = textBox1.Text;

            try
            {
                WebClient client = new WebClient();
                Stream data = client.OpenRead(httpadress + @"/err_log.txt");
                StreamReader reader = new StreamReader(data);

                string str = reader.ReadLine();
                int x = 1;

                if (temp1 == temp3)
                {
                    while (str != null && x <= 7)
                    {
                        str = reader.ReadLine();

                        if (x == 4)
                        {
                            richTextBox1.Text += (str + "\n\n");
                            temp1 = str; //dieser string ist in forms.disgner erstellt.
                        }

                        if (x == 5)
                        {
                            richTextBox1.Text += (str + "\n--------------------------------------------------------------------------------------");
                            temp2 = str; //dieser string ist in forms.disgner erstellt.
                        }
                        x++;
                    }
                    data.Close();
                }
            }
            catch (WebException exp)
            {
                MessageBox.Show(exp.Message, "Exception");
            }
        }






    }


}

L
497 Beiträge seit 2006
vor 17 Jahren

Ich befürchte, Du tust immer noch ein paar Sachen, die Du gar nicht tun willst. Also zunächst einmal: Warum hast Du auf einmal 2 Timer? Wenn Du in einem regelmäßigen Intervall in einer Datei im Web schauen willst, ob sie sich verändert hat, dann brauchst Du nur einen.

Beim Initilaisieren eines Strings musst Du keine Klammern um "" machen.

Du rufst auch weiterhin zweimal ganz kurz hintereinander den StreamReader auf wenn Du die while-Schleife betrittst. Das ist nicht wiklich sauber und schlecht zu verstehen. Du solltest das str = reader.ReadLine(); immer am Ende der while-Schleife ausführen. Das hat außerdem den Vorteil, dass direkt anschließend die Bedingung der while-Schleife geprüft wird und falls null vom ReadLine() zurückgegeben wurde, die Schleife verlassen wird. Mit der aktuellen Version könnte es passieren, dass Du null ausliest und damit weiterarbeitest.

Außerdem habe ich noch eine Vermutung: Muss man den StreamReader nicht auch wieder schließen, also auch reader.Close() aufrufen dort wo Du schon data.Close() aufgerufen hast?

Um Deinem Problem auf die Schliche zu kommen, solltest Du das Programm mal debuggen und sehen, ob die Variablenwerte die sind, die Du erwartest.

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Danke schön ich glaube das liegt daran das ich den stream reader nicht geschlossen hab

werde gleich mal schauen

S
1.047 Beiträge seit 2005
vor 17 Jahren

der reine code zum auslesen könnte so aussehen

	string httpadress = textBox1.Text;
	try {
		WebClient client = new WebClient();
		
		using(StreamReader reader = new StreamReader(client.OpenRead(httpadress + @"/err_log.txt"))) {		
			for(int i=0;i<=5;i++) {
				string line = reader.ReadLine();
				if(line==null) {
					break; //schleife abbrechen
				}
				if(x==4) {
					richTextBox1.Text += (str + "\n\n");
					temp1 = str; //dieser string ist in forms.disgner erstellt.
				}
				if(x==5) {
					richTextBox1.Text += (str + "\n--------------------------------------------------------------------------------------");
					temp2 = str; //dieser string ist in forms.disgner erstellt.
				}
			}
		}
	} catch (WebException exp) {
		MessageBox.Show(exp.Message, "Exception");
	}

anmerkung zur for schleife: von 0 bis einschließlich 5 heißt die erste n6 zeilen... die interessieren ja auch nur 🙂

was soll der vergleich mit temp1 und temp2 eigentlich?
hab ihc im code oben erstmal nicht drin... wenn du bei gleichheit nicht machen möchtest, dann soltest du das if um alles drumherum setzen, so daß alles innerhalb des try-catch schon garnicht ausgeführt wird...

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Der Vergleich soll das Ausführen des Codes unterbinden wenn sich nix auf der url verändert. Nja hab das alles schon fertig aber jetzt möchte ich mal was hochladen nur es ensteht immer ein Fehler(hab einen funpic acc)

                // Get the object used to communicate with the server.
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://doranged.xdo.funpic.de/");
                request.Method = WebRequestMethods.Ftp.UploadFile;

                // This example assumes the FTP site uses anonymous logon.
                request.Credentials = new NetworkCredential("username", "password");

                // Copy the contents of the file to the request stream.
                StreamReader sourceStream = new StreamReader("cache.txt");
                byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                sourceStream.Close();


                request.ContentLength = fileContents.Length;

                Stream requestStream = request.GetRequestStream();  //////////Der angeforderte URI ist für diesen FTP-Befehl ungültig.
                requestStream.Write(fileContents, 0, fileContents.Length);
                requestStream.Close();

                FtpWebResponse response = (FtpWebResponse)request.GetResponse();

                response.Close();
S
1.047 Beiträge seit 2005
vor 17 Jahren

kommst du nur über ftp an die datei ran? du willst sie ja nur runterladen, oder?

anstonen fehlt wohl beim ftp noch dein nutzername und das alles... wobei du dann aber auch den kompletten pfad zur datei mit angeben mußt

so wie du es jetzt hast würde man ds mit einem ftp programm machen...

änder mal deine url zu "ftp://<username>:passowrt@<url>"

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

nene ich will sie nicht hochladen aber der bleibt ja immer an Stream requestStream = request.GetRequestStream(); hängen und die methode die du gesagt hast funzt nicht in diesen fall

S
1.047 Beiträge seit 2005
vor 17 Jahren

hmpf, hat mich shcon wieder verlesen o.O

ach ich seh grad das du die ganzen ftp geschichten ja schon im quellcode hast ^^

hast mal geprüft ob dein link überhaupt funktioniert?

auf den ftp komm ich nämlich garnicht rauf o.O

nachtrag:
hab mal in der hilfe gestöbert und da ist ein sehr schönes beispiel drin

//---------------------------------------------------------------------
//  This file is part of the Microsoft .NET Framework SDK Code Samples.
// 
//  Copyright (C) Microsoft Corporation.  All rights reserved.
// 
//This source code is intended only as a supplement to Microsoft
//Development Tools and/or on-line documentation.  See these other
//materials for detailed information regarding Microsoft code samples.
// 
//THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
//KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
//IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//PARTICULAR PURPOSE.
//---------------------------------------------------------------------

#region Using directives

using System;
using System.Text;
using System.IO;
using System.Net;
#endregion

namespace Microsoft.Samples.FtpSample
{
    static class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 0 || args[0].Equals("/?"))
            {
                DisplayUsage();
            }
            else if (args.Length == 1)
            {
                Download(args[0]);
            }
            else if (args.Length == 2)
            {
                if (args[0].Equals("/list"))
                    List(args[1]);
                else
                    Upload(args[0], args[1]);
            }
            else
            {
                Console.WriteLine("Unrecognized argument.");
            }
        }


        static void DisplayUsage()
        {
            Console.WriteLine("USAGE:");
            Console.WriteLine("    FtpSample [/? | <FTP download URL> | <local file>");
            Console.WriteLine("               <FTP upload URL> | /list <FTP list URL>]");
            Console.WriteLine();
            Console.WriteLine("where");
            Console.WriteLine("    FTP download URL   URL of a file to download from an FTP server.");
            Console.WriteLine("    FTP upload URL     Location on a FTP server to upload a file to.");
            Console.WriteLine("    FTP list URL       Location on a FTP server to list the contents of.");
            Console.WriteLine("    local file         A local file to upload to an FTP server.");
            Console.WriteLine();
            Console.WriteLine("    Options:");
            Console.WriteLine("        /?             Display this help message.");
            Console.WriteLine("        /list          Specifies the list command.");
            Console.WriteLine();
            Console.WriteLine("EXAMPLES:");
            Console.WriteLine("    Download a file    FtpSample [URL]ftp://myserver/download.txt[/URL]");
            Console.WriteLine("    Upload a file      FtpSample upload.txt [URL]ftp://myserver/upload.txt[/URL]");
        }

        static void Download(string downloadUrl)
        {
            Stream responseStream = null;
            FileStream fileStream = null;
			StreamReader reader = null;
			try
			{
				FtpWebRequest downloadRequest =
					(FtpWebRequest)WebRequest.Create(downloadUrl);
				FtpWebResponse downloadResponse =
					(FtpWebResponse)downloadRequest.GetResponse();
				responseStream = downloadResponse.GetResponseStream();

				string fileName =
					Path.GetFileName(downloadRequest.RequestUri.AbsolutePath);

				if (fileName.Length == 0)
				{
					reader = new StreamReader(responseStream);
					Console.WriteLine(reader.ReadToEnd());
				}
				else
				{
					fileStream = File.Create(fileName);
					byte[] buffer = new byte[1024];
					int bytesRead;
					while (true)
					{
						bytesRead = responseStream.Read(buffer, 0, buffer.Length);
						if (bytesRead == 0)
							break;
						fileStream.Write(buffer, 0, bytesRead);
					}
				}
				Console.WriteLine("Download complete.");
			}
			catch (UriFormatException ex)
			{
				Console.WriteLine(ex.Message);
			}
			catch (WebException ex)
			{
				Console.WriteLine(ex.Message);
			}
			catch (IOException ex)
			{
				Console.WriteLine(ex.Message);
			}
            finally
            {
				if (reader != null)
					reader.Close();
				else if (responseStream != null)
                    responseStream.Close();
                if (fileStream != null)
                    fileStream.Close();
            }
        }

        static void Upload(string fileName, string uploadUrl)
        {
            Stream requestStream = null;
            FileStream fileStream = null;
            FtpWebResponse uploadResponse = null;
			try
			{
				FtpWebRequest uploadRequest =
					(FtpWebRequest)WebRequest.Create(uploadUrl);
				uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;

				// UploadFile is not supported through an Http proxy
				// so we disable the proxy for this request.
				uploadRequest.Proxy = null;

				requestStream = uploadRequest.GetRequestStream();
				fileStream = File.Open(fileName, FileMode.Open);

				byte[] buffer = new byte[1024];
				int bytesRead;
				while (true)
				{
					bytesRead = fileStream.Read(buffer, 0, buffer.Length);
					if (bytesRead == 0)
						break;
					requestStream.Write(buffer, 0, bytesRead);
				}
				
				// The request stream must be closed before getting 
				// the response.
				requestStream.Close();

				uploadResponse =
					(FtpWebResponse)uploadRequest.GetResponse();
				Console.WriteLine("Upload complete.");
			}
			catch (UriFormatException ex)
			{
				Console.WriteLine(ex.Message);
			}
			catch (IOException ex)
			{
				Console.WriteLine(ex.Message);
			}
			catch (WebException ex)
			{
				Console.WriteLine(ex.Message);
			}
            finally
            {
                if (uploadResponse != null)
                    uploadResponse.Close();
                if (fileStream != null)
                    fileStream.Close();
                if (requestStream != null)
                    requestStream.Close();
            }
        }

        private static void List(string listUrl)
        {
            StreamReader reader = null;
            try
            {
                FtpWebRequest listRequest =
                    (FtpWebRequest)WebRequest.Create(listUrl);
                listRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
                FtpWebResponse listResponse =
                    (FtpWebResponse)listRequest.GetResponse();
                reader = new StreamReader(listResponse.GetResponseStream());
                Console.WriteLine(reader.ReadToEnd());
                Console.WriteLine("List complete.");
            }
			catch (UriFormatException ex)
			{
				Console.WriteLine(ex.Message);
			}
            catch (WebException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (reader != null)
                    reader.Close();
            }
        }
    }
}

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Danke ich hab mich aber entschieden das mit cmd zu lösen auch wen das nicht so elegant ist nja beim nächsten mal benutz ich dein code ^^(wegen der falschen uri ich hab leztes mal ausversehn die richtige uri mit passwort unsw gepostet nach dem mir das aufgefallen ist hab ich die uri geändert)

ich habe dan noch eine frage die nicht zum thema passt aber ich kann ja nicht mein leben lang das forum mit fragen vollspammen deshalb wollte ich mal fargen welches c# buch du so empfehlen kanst.

S
1.047 Beiträge seit 2005
vor 17 Jahren

ehrlich gesagt hab ich garkein buch wo ich so richtig drin lese...

hab daheim eins zu ado.net und dieses visual c# buch von addison wesley... ansonsten sind mir bücher aber einfach zu teuer... ich les halt immer mycsharp-themen die mich interessieren... da bekommt man auch einiges mit 🙂
anstonen is google mein freund wenn es ums informationen beschaffen geht g

nachtrag:
schade, du warst ja knapp dran eine richtige lösung zu haben 🙂
mußt nur mal deinen code mitdem beispiel aus der hilfe vergleichen...
das erste was mir aufgefallen ist: dein webrequest enthält nicht den dateinamen... den mußt du aber mit angeben. also kompletter pfad.

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

stimmt^^ 😁
hab ich übersehe xD

Nja dan las ich das auch mit den Buch (scheinst ja so auch weit gekommen zu sein)

L
497 Beiträge seit 2006
vor 17 Jahren

Wenn Du wirklich weitreichende Informationen zu einem oder mehreren Themen suchst, dann ist ein Buch schon nicht verkehrt. Du wirst auch mit den Informationen aus dem Forum weit kommen (Das hast Du ja schon gemerkt), aber nie alle Informationen haben. Ein guter "Trick", um ein gutes Buch für Dich zu finden, ist, in einer Buchhandlung mal ein paar verschiedene durchzublättern und Dich kurz in ein Thema reinzulesen, mit dem Du Dich schon einigermaßen auskennst. Wenn Du dann noch etwas neues lernst, dann ist das Buch vermutlich gut genug - wenn Du nur Bahnhof verstehst, dann ist es entweder schlecht geschrieben oder eine Nummer zu fortgeschritten.

Ich habe ja anderweitig schon das Buch Professional C# 2005 von Wrax Press empfohlen - hierbei handelt es sich aber schon um ein recht komplexes Buch, dass außerdem auch seinen Preis hat.

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

danke