C# Programmaufruf mit Kommandozeilenparameter

Status
Es sind keine weiteren Antworten möglich.

Suprimos

Lt. Junior Grade
Dabei seit
Sep. 2009
Beiträge
496
Hallo,
hab hier mal wieder ein kleines Problem von der Uni bekommen :D
es geht darum:
Das Programm soll wie folgt aufgerufen werden, die Eingabe- bzw. Ausgabedatei werden als Kommandozeilenparamter
übergeben:
isort input.txt output.txt


soweit so gut, problem ist nur das ich so etwas bisher noch nicht gelernt habe.
Ich habe bereits ein Programm geschrieben das wenn ich es ausführe es die input.txt einliest, und eine output.txt schreibt.
aber wie übergebe ich sowas in der kommandozeile?
kann mir da vielleicht jemand einen tipp geben?

Mfg
 

e-Laurin

Fleet Admiral
Dabei seit
Juni 2005
Beiträge
10.497
Erstens machen wir keine Hausaufgaben für dich und
zweitens lässt sich so etwas über Google in unter 1 Minute finden.

Studium bedeutet Selbststudium. Wenn man dir es nicht beibringt, dann musst du dich selbst hinsetzen und dir das erarbeiten.
 

dracki

Lieutenant
Dabei seit
Juli 2008
Beiträge
579
ne kurze google suche hilft da wunder ;)
du hast des meiste ja schon, musst ja nur noch schauen wie du des output.txt aus der kommandozeile holst
 

BCBO1991

Ensign
Dabei seit
Aug. 2010
Beiträge
187
Guck dir mal die System.Environment Klasse an. Da findest du alles, was du brauchst.
 

Suprimos

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Sep. 2009
Beiträge
496
@e-laurin
also,
1. ist das keine komplette hausaufgabe, sondern lediglich ein teil...
ich frage hier ja nicht nach einer lösung , sonst hätte ich ja die komplette aufgabe gepostet. ich will ja lediglich wissen wie die kommandozeilen übergabe in c# funktioniert !

2. ich habe leider nicht das gefunden was ich wissen wollte bei google. wenn du sowas in unter 1min findest, ist das schön, du programmierst vielleicht auch 12h am tag, und weißt genau wonach du suchen musst. ich habe bisher ein semester c# gehabt, bin also im prinzip noch ein noob.
 
Zuletzt bearbeitet:

Suprimos

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Sep. 2009
Beiträge
496
danke @ all
wenn ich das richtig verstanden habe, werden durch die argumente input.txt und output.txt ja lediglich die namen der einzulesenden und auszugebenden datei bestimmt
 

Suprimos

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Sep. 2009
Beiträge
496
soweit hab ich das auch verstanden...
ich wollte es mal eben programmieren, komme aber auf fehler...
wenn ich das programm unter linux mit:
mono isort.exe input.txt und output.txt starte,

und dann das eben gelernte mit einbaue (ich zeige hier nur die wichtigsten ausschnitte):

public static void Main(string[] args)

using (StreamReader sr = new StreamReader("args[1]"))

kommt:
Exception: System.IO.FileNotFoundException: Could not find file "******/Desktop/args[1]".
 

Tumbleweed

Captain
Dabei seit
März 2008
Beiträge
3.598
In args[1] ist doch ein String drin. Wenn du allerdings "" drum herum machst, dann bekommst du nicht das was in dem Array steht, sondern eben "args[1]"
 

Suprimos

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Sep. 2009
Beiträge
496
achso, ja lol stimmt...
danke für den hinweis

DANKE !!!
es hat alles geklappt :D
vielen dank für eure hilfe
 
M

MacGyver

Gast
Ich würds so machen:
Code:
using System.IO;

public static void Main(string[] args)
{
       // Prüfen ob die Eingabedatei überhaupt da ist:
       if (!File.Exists(args[1])
          return;
       
       FileStream fs = new FileStream(args[1],FileMode.Open, FileAccess.Read);
       StreamReader sr = new StreamReader(fs);

       string line = sr.ReadLine();
}
 

toeffi

Lt. Junior Grade
Dabei seit
Feb. 2010
Beiträge
474
@MacGyver. Wir hatten das Thema File IO letztens in vielen Threads gehabt, und es wurde immer drauf hingewiesen das ganze mit einem using-Block und einem Try-Catch zu ummanteln. Denn sicher kannst du nicht sein das die Datei existiert nachdem deine File.Exist durchgelaufen ist. Kann also immernoch ein Fehler passieren.
Und deine Methode ist mehr als unsauber, die Streams werden nirgends geschlossen.
 

roker002

Commander
Dabei seit
Dez. 2007
Beiträge
2.051
Es gibt schon eine fertige statische Methode in File oder Path oder Directory, die dir die ganze Datei einliest und in String oder List abspeichert. Wieso die Mühe machen alles Per hand und unsauber zu Programmieren?
 
M

MacGyver

Gast
@MacGyver. Wir hatten das Thema File IO letztens in vielen Threads gehabt, und es wurde immer drauf hingewiesen das ganze mit einem using-Block und einem Try-Catch zu ummanteln. Denn sicher kannst du nicht sein das die Datei existiert nachdem deine File.Exist durchgelaufen ist. Kann also immernoch ein Fehler passieren.
Und deine Methode ist mehr als unsauber, die Streams werden nirgends geschlossen.
Das ist mir auch klar dass das nicht sauber ist. Ich hab aber keine Zeit und keine Lust ne komplette Funktion zu schreiben. Sollte nur ein Beispiel sein.
 

TheCadillacMan

Commander
Dabei seit
Juni 2005
Beiträge
2.535
M

MacGyver

Gast
Entweder du postest eine repräsentable Lösung, oder du lässt es, wenn du keine Lust/Zeit hast, aber was, fast schon falsches, zu posten ist nicht hilfreich.
Entschuldigung das ist was helfen wollte.
Und wann das alles so falsch ist funktioniert es in meinen Programmen erstaunlich gut.
Using zu benutzen macht für mich keinen Sinn weil das Programm für die geschilderte Aufgabe nicht komplex genug ist. Und try-catch-Blöcke kann jeder selber setzen.
Ich finde wenn man ein Beispiel macht sollte man sich aufs Wesentliche beschränken und nicht noch hübsches Rahmenwerk drumrum basteln.
 
Zuletzt bearbeitet:

DoNG

Lt. Junior Grade
Dabei seit
Sep. 2008
Beiträge
334
Using macht prinzipiell bei jedem Disposable einen Sinn, da es dann am Ende automatisch freigegeben wird, und man sich als Programmierer nicht darum kümmern muss.
 
Status
Es sind keine weiteren Antworten möglich.
Top