Als verklaring helpt; verschillende kleuren aan bepaalde criteria

Ik ben een beginner en als statements mijn zwakheid zijn. Ik heb een eenvoudig programma dat bestandsnamen toont die zich in een bepaalde map bevinden. Sommige bestanden kunnen echter lijnen bevatten die beginnen met LIFT. Ik wil die bestanden vangen die die bepaalde regel hebben en de bestandsnaam in een andere kleur weergeven (bij voorkeur rood). Dit is wat ik tot nu toe heb gedaan: alle hulp zou zeer op prijs gesteld worden !! Bedankt!

public partial class ShippedOrders : System.Web.UI.Page
{
    class Program
    {
        static void Main()
        {
            string[] array1 = Directory.GetFiles(@"C:\Kaplan\Replies\");
            string[] array2 = Directory.GetFiles(@"C:\Kaplan\Replies\", "*.REP");
            Console.WriteLine("---Files:---");
            foreach (string name in array1)
            {
                Console.WriteLine(name);
            }
            Console.WriteLine("---REP Files: ---");
            foreach (string name in array2)
            {
                Console.WriteLine(name);
            }
        }
    }
}
1
Heeft u het over de bestandsnaam of binnen het bestand zelf?
toegevoegd de auteur Mitchel Sellers, de bron
Waarom schrijf je naar de console in ASP.Net?
toegevoegd de auteur SLaks, de bron
in het bestand. en @SLaks; Ja.
toegevoegd de auteur javasocute, de bron
@javasocute - U zou niet naar de console moeten schrijven binnen een System.Web.UI.Page-klasse, uw code moeten aanpassen, zodat het logischer is, wat begrijpt u niet precies over de uitspraken?
toegevoegd de auteur Security Hound, de bron

3 antwoord

Directory.GetFiles (directoryPath) retourneert een reeks tekenreeksen met de bestandsnamen (volledige paden) in die map. Je zult elk bestand daadwerkelijk moeten openen en lezen, met behulp van de string array geretourneerd. Lees elk bestand regel voor regel in een lus en test of lijnen beginnen met "LIFT".

Ook de manier waarop u uw code achter de schermen instelt voor deze webpagina is funky. U declareert een klasse binnen de gedeeltelijke klasse van de pagina. Probeer je code zo in te stellen:

public partial class ShippedOrders : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.goFiles();
    }

    public void goFiles()
    {
        string[] array1 = Directory.GetFiles(@"C:\Kaplan\Replies\");
        string[] array2 = Directory.GetFiles(@"C:\Kaplan\Replies\", "*.REP");
        System.IO.StreamReader file = null;
        string line = "";
        bool hasLIFT = false;

        Response.Write("---Files:---
"); foreach (string name in array1) { file = new System.IO.StreamReader(@name); while((line = file.ReadLine()) != null) { if(line.StartsWith("LIFT")) { hasLIFT = true; break; } } if(hasLIFT) { Response.Write("" + name + "
"; hasLIFT = false; } else Response.Write(name + "
"; } //and can do the same for other array } }
2
toegevoegd
@javasocute zie mijn update. Ik heb het schrijven naar de console veranderd om je tekst in de reactie van het paginavraag te schrijven. dit zou u moeten helpen de resultaten te krijgen waarnaar u op zoek bent
toegevoegd de auteur Nick Rolando, de bron
@javasocute Ik heb nog een update uitgevoerd om je te helpen je code correct in te stellen in de code - achter je pagina.
toegevoegd de auteur Nick Rolando, de bron
@javasocute Nou, ik denk dat het afhangt van de reden dat je deze bestandsnamen schrijft. Zie je zelfs de uitvoer van Console.WriteLine ()? Ik denk dat je daarvoor een aangepaste schrijver voor de console moet instellen. U kunt System.Diagnostics.Debug.WriteLine ("debug statement"); gebruiken om naar het outputvenster in VS in debugger te schrijven. Maar Response.Write() toont u de uitvoer direct daar op de pagina, ongeacht.
toegevoegd de auteur Nick Rolando, de bron
Als het goed werkt, en je krijgt wat je wilt, ga er dan zeker voor. Het lijkt erop dat @Miguel kan helpen de lettertypekleur daar te veranderen. Sorry, ik veranderde het naar Response ^^ Het is gewoon vaker gebruikt in asp.net geloof ik
toegevoegd de auteur Nick Rolando, de bron
while ((line = reader.ReadLine ())! = null) {if (line.StartsWith ("LIFT")) Console.ForegroundColor = Console.Color.Red; met zowel code voor shredder en miguels. ben ik hiermee op de goede weg?
toegevoegd de auteur javasocute, de bron
Bedankt voor al je hulp. Shredder, nieuwsgierig, waarom gebruik je response.write in plaats van console. Ik denk dat ik al deze console en nonconsole dingen moet leren.
toegevoegd de auteur javasocute, de bron
Console.Writeline() werkt prima. De bestandsnamen worden weergegeven zoals ik wil. Dit is een webapplicatie, maar ik veronderstel dat ik de console niet mag gebruiken. Idk. Ik zal daar naar moeten kijken.
toegevoegd de auteur javasocute, de bron

U kunt de uitvoerkleur van de console wijzigen met behulp van de eigenschap Console.ForegroundColor .

Om te weten of het bestand de gewenste tekst bevat, moet u het openen en het bestand scannen.

Doe dit dan:

if (fileContainsText) Console.ForegroundColor = ConsoleColor.Red;
else Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(name);

Bewerken

Ik heb niet gemerkt dat je probeerde te schrijven naar Console binnen een ASP.NET-serverpagina ... in dat geval moet je ons vertellen welk soort app je aan het maken bent ... is het een Console-applicatie, een WebApplication of een Website ... het hangt ervan af.

Het gebruik van console is niet geschikt voor webtoepassingen.

EDIT 2

Overigens kunt u de console alleen gebruiken in consoletoepassingen. Een consoletoepassing is een zelfstandige Windows-toepassing die verschilt van een webtoepassing.

Als u ooit een console-app wilt maken, kunt u deze in het venster Nieuw project vinden onder de categorie Windows . Vervolgens kunt u een projecttype met de naam Consoletoepassing vinden.

1
toegevoegd

You can do like this inside your foreach loop: if(name.contains("LIFT")) { //make red. }

het heeft echter wel het probleem dat alleen wordt gecontroleerd of de string (naam) de tekenreeks LIFT bevat en niet of de tekenreeks zich in het begin van de bestandsnaam bevindt. Als u wilt controleren of LIFT in het begin van de bestandsnaam staat, moet u enkele van de Trim-methoden gebruiken.

0
toegevoegd