2009-06-02 2 views
0

을 만들면 기존 파일과 동일한 이름의 새 파일을 만들 때 사용자에게 출력 파일이 이미 있다는 메시지가 표시되지 않고, 그러나 (1) 파일 이름의 끝 ...에Windows 환경에서 여러 응용 프로그램에서 '새 파일 Windows'동작

name.doc 

나는 C#에서 동일한 동작을 만들려고 해요

name(1).doc 

될 것으로 새 파일을 만들고 제 질문은 ...이 코드를 모두 줄일 수 있습니까?

FileInfo finfo = new FileInfo(fullOutputPath); 
if (finfo.Exists) 
{ 
    int iFile = 0; 
    bool exitCreatingFile = false; 
    while (!exitCreatingFile) 
    { 
    iFile++; 
    if (fullOutputPath.Contains("(" + (iFile - 1) + ").")) 
     fullOutputPath = fullOutputPath.Replace(
       "(" + (iFile - 1) + ").", 
       "(" + iFile + ")."); // (1) --> (2) 

    else 
     fullOutputPath = fullOutputPath.Replace(
       Path.GetFileNameWithoutExtension(finfo.Name), 
       Path.GetFileNameWithoutExtension(finfo.Name) + "(" + iFile + ")"); // name.doc --> name(1).doc 

    finfo = new FileInfo(fullOutputPath); 
    if (!finfo.Exists) 
     exitCreatingFile = true; 
    } 
} 

답변

2

: 윈폼을 개발할 때

FileInfo finfo = new FileInfo(fullOutputPath); 
int iFile = 1; 
while (finfo.Exists) 
{ 
    finfo = new FileInfo(
     Path.GetFileNameWithoutExtension(fullOutputPath) + 
     "(" + iFile + ")" + 
     Path.GetExtension(fullOutputPath)); 
    iFile++; 
} 
// Optionally add fullOutputPath = finfo.Name; if you want to record the final name used 
+0

많은 청소기 :) 덕분에 – balexandre

+0

확실히 원래 방법보다 낫다. FileInfo 객체에서 사용할 수 있기 때문에 별도로 이름을 저장할 이유가 없습니다. –

+0

'fullOutputPath'가 원래의 코드에서 구체적으로 현재 위치에서 업데이트 중이므로 더 이상 계속 사용될 수 있는지 여부를 알 수 없습니다. – jerryjvl

2

파일 메뉴 구현의 대부분의 세부 사항을 처리하는 Winforms 컨트롤을 작성했습니다. 나는 그것이 더 적은 코드를 사용한다고 생각하지는 않지만 (implementaiton은 다르지만), 당신은 한 번 보길 원할지도 모른다.

FileSelect 제어합니다 (에서는 FileInfo 생성자의 주위에 처리 더 이상 예외를 추가하지 않고)에 대해 어떻게

+0

thxs, 내가 생각하고있는 것입니다! – balexandre

관련 문제