2014-09-11 100 views
0

我的程序應該讀取該文件並計算其中的元音和輔音的數量。所以,fileName必須作爲命令行參數傳遞。這是我的代碼部分:C#通過命令行傳遞文件

class FileDetails 
{ 
    static void Main(string[] args) 
    { 

     Console.WriteLine(args.Length); 
     foreach (string arg in args) 
     { 
      Console.WriteLine(arg); 
     } 
    } 
} 

這個文件的編譯後,我通過命令行運行它,並傳遞一些參數的主要功能:

C:\Users\StepN\Desktop\FILEDETAILS>filedetails abc def xyz 

PROGRAMM的結果看起來是這樣的:

3 
abc 
def 
xyz 

所以,問題的根源在於我需要傳遞一個命令行參數的文件名,但我不知道該怎麼做。

在此先感謝您的幫助!

+5

因此,您的所有參數都已成功傳遞。問題是什麼? – 2014-09-11 08:30:37

+0

嘗試使用System.IO.File.ReadAllLines(args [0]) – 2014-09-11 08:31:08

+0

代碼沒有問題。它是*工作*根據您編碼的方式。現在,你需要做的就是用這種方式調用程序,「filedetails.exe myfile.txt」。您可以在代碼中獲取文件名(args [0])並打開文件並讀取內容並執行您的工作。這是你的編程任務嗎? :-) (開玩笑) – Thangadurai 2014-09-11 08:37:33

回答

0
class Program 
{ 
    static void Main(string[] args) 
    { 
    if (args.Length == 0){ 
     Console.WriteLine("Please pass command line arguments."); 
     return; 
    } 

    string fileName = args[0]; 

    } 
} 
0

如果您在一個命令行參數中使用空格,請用雙引號括起來。這是你應該如何給參數可執行:

C:\Users\StepN\Desktop\FILEDETAILS>filedetails.exe "C:\file name.txt" 

在代碼訪問文件名:

class FileDetails 
{ 
    static void Main(string[] args) 
    { 
    if(args.Length > 0) 
    { 
     string filePath = args[0];    

     //read the file using System.IO namespace 
    } 

    } 
} 
0

你可以有唯一的問題是有空格的文件名。如果您的文件名abc def xyz,那麼你應該通過它雙引號括起來:

C:\Users\StepN\Desktop\FILEDETAILS>filedetails "abc def xyz" 
0

有辦法做到。

1)打開記事本並編寫代碼並保存。 2)最重要的是:打開visual studio命令提示符並編譯代碼如下: (i)設置當前路徑,您的程序保存在哪裏。 (ii)與CSC FileName.cs編譯

3)現在,執行程序中使用以下命令行參數: (一)文件名ARG1 ARG2

如果你不舒服這樣做,然後創建一個批處理文件並通過編寫你的論點。然後運行你的.bat文件,它會觸發你的C#程序。我的意思是這可能會觸發bin文件夾中的.exe文件。

相關問題