2013-02-23 10 views
3

목록에서 파일 크기를 가져 와서 결과를 텍스트 파일로 출력하려고합니다. 현재 파일을 읽었을 때 파일을 읽었는지 확인하고 콘솔과 텍스트 파일로 출력하면텍스트 파일에서 파일 크기 가져 오기

저는 "이번 주에 시작되었습니다"라는 새로운 프로그래밍입니다. 이것은 쉬운 질문일지도 모르지만 시도하고십시오 그러나 기울어지는 것은 확실히 그것을 작동한다

나는 foreach 반복 안쪽에 이것을 두는 것을 시도하고 경로를 읽는 것을 시도해 그러나 작동하지 않는다. 그것은이 방법을 수행 할 수 없습니다해야하는 이유

 DirectoryInfo di = new DirectoryInfo(path); 
     FileInfo[] fiArr = di.GetFiles(); 
     foreach (FileInfo f in fiArr) 

심하게 코드를 사전에 그리고이 경우 내 코드 지금까지

static void Main(string[] args) 
    { 

     string[] lines = System.IO.File.ReadAllLines(@"C:\Locations2.txt"); 
     foreach (string path in lines) 
      if (File.Exists(path)) 
       using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
       { 
        file.WriteLine("File found" + "\t" + path); 
        Console.WriteLine("File found" + "\t" + path); 
       } 


      else 
       using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
       { 
        file.WriteLine("Does not Exist" + "\t" + path); 
        Console.WriteLine("Does not Exist" + "\t" + path); 
       } 

    } 

감사합니다 당신이 조언을 할 수 있습니까?

+1

힌트 : 배치 파일 작성/루프 외부 개방 .... –

답변

9

당신은 파일에 대한 정보를 얻을 수 있습니다 - 크기를 포함하여 -

예를 들어, FileInfo 클래스

var fileName = @"C:\Locations2.txt"; 
FileInfo fi = new FileInfo(fileName); 
var size = fi.Length; 
Console.WriteLine("File Size in Bytes: {0}", size); 

루프 내부에 넣은 코드는 올바른 개념이며 잘못된 구현입니다. 열려고하는 파일 이름을 아는 경우 DirectoryInfo.GetFiles 경로를 거칠 필요가 없습니다. FileInfo에 직접 액세스하면됩니다.

static void Main(string[] args) 
{ 

    string[] lines = System.IO.File.ReadAllLines(@"C:\Locations2.txt"); 
    foreach (string path in lines) 
     if (File.Exists(path)) 
      using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
      { 
       file.WriteLine("File found" + "\t" + path); 
       Console.WriteLine("File found" + "\t" + path); 

       FileInfo fi = new FileInfo(path); 
       var size = fi.Length; 
       file.WriteLine("File Size in Bytes: {0}", size); 
       Console.WriteLine("File Size in Bytes: {0}", size); 
      } 


     else 
      using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Results.txt", true)) 
      { 
       file.WriteLine("Does not Exist" + "\t" + path); 
       Console.WriteLine("Does not Exist" + "\t" + path); 
      } 

} 
+0

이 아니라 하나의 파일 이름을 찾아 낼 것입니다

그래서 코드는 다음과 같을 것이다. C : \ Locations2.txt 내부는 위치 목록입니다.이 위치는 파일 locations2.txt의 새 줄에 파일 크기를 찾기 위해 전달되어야합니다. 예를 들어 "c : \ 1.txt, c : \ 2.txt, c : \ 3.txt " – Charles

+0

무슨 뜻인지 이해가 안됩니다. Locations2.txt에 들어있는 샘플을 제공 할 수 있습니까? 출력 좀 보여줘? 이 추가 정보로 질문을 수정하십시오. –

+0

"c : \ 1.txt, c : \ 2.txt, c : \ 3.txt"새 줄의 각 경로 – Charles

관련 문제