2017-01-16 3 views
0

bien je fais quelque chose qui devrait être plutôt simple, je crois que je suis en train de négliger quelque chose ici.C# Stream continue à sauter la première ligne

D'accord et en utilisant un HttpWebRequest et un WebResponse pour détecter si un Robots.txt existe sur un serveur (et cela fonctionne parfaitement bien). Cependant, j'essaye d'ajouter à myList.Add (reader.ReadLine()); Lequel (travaille). Mais le problème est, il continue à sauter la toute première ligne.

https://www.assetstore.unity3d.com/robots.txt < C'est celui que j'ai commencé à remarquer le problème (juste pour que vous sachiez de quoi je parle). C'est juste à des fins de test. (Regardez ce lien pour que vous puissiez avoir une idée de ce dont je parle).

Anywho, il n'ajoute pas non plus le reader.ReadLine à ma liste (première ligne seulement). Donc, je ne comprends pas très bien ce qui se passe, j'ai essayé de regarder ça et les seules choses que je découvre est de vouloir sciemment sauter une ligne, je ne veux pas faire ça.

Mon code ci-dessous.

Console.WriteLine("Robots.txt Found: Presenting Rules in (Robot Rules)."); 
       HttpWebRequest getResults = (HttpWebRequest)WebRequest.Create(ur + "robots.txt"); 
       WebResponse getResponse = getResults.GetResponse(); 
       using (StreamReader reader = new StreamReader(getResponse.GetResponseStream())) { 
        string line = reader.ReadLine(); 
        while(line != null && line != "#") { 
         line = reader.ReadLine(); 
         rslList.Add(line); 
         results.Text = results.Text + line + Environment.NewLine; // At first I thought it might have been this (nope). 
        } 


        // This didn't work either (figured perhaps maybe it was skipping because I had to many things. 
        // So I just put into a for loop, - nope still skips first line. 
        // for(int i = 0; i < rslList.Count; i++) { 
        //  results.Text = results.Text + rslList[i] + Environment.NewLine; 
        // } 
       } 
       // Close the connection sense it is no longer needed. 
       getResponse.Close(); 
       // Now check for user-rights. 
       CheckUserRights(); 

Image des résultats. enter image description here

+4

Vous jetez la première ligne de chaîne '= reader.ReadLine();' - changer votre 'while' un' do'/' tandis que. – Enigmativity

+0

Merci d'essayer ça maintenant. – n1warhead

+0

Merci l'homme qui a totalement travaillé! – n1warhead

Répondre

1

Modifier la prochaine fois que vous appelez la ligne de lecture

var line = reader.ReadLine(); //Read first line 
while(line != null && line != "#") { //while line condition satisfied 
    //perform your desired actions 
    rslList.Add(line); 
    results.Text = results.Text + line + Environment.NewLine; 
    line = reader.ReadLine(); //read the next line 
} 
+0

Salut merci pour l'aide, j'ai d'abord essayé Enigmativity (parce que je l'ai remarqué en premier) et son travail ... Merci pour votre temps. – n1warhead

+0

@ n1warhead - Donnez la tique à Nkosi - il a pris le temps de mettre en œuvre ma suggestion - m'a sauvé le temps. :-) – Enigmativity