2011-03-16 3 views
1

0 바이트 파일이 C# 코드 뒤에있는 파일을 바꿀 때 작성되었습니다. 위의 코드에서 파일은 0 바이트 (0 바이트)로 저장됩니다.

string FileExactLocation = s + str; 
    if (File.Exists(FileExactLocation)) 
    { 
     File.Replace(FileExactLocation, FileExactLocation,"werwe"); 
    } 
    else 
     FileUpload1.SaveAs(FileExactLocation); 

, ...

내가 그것을 삭제, 서버에있는 파일을 삭제 도착하려하지만 난 (교체) 저장하려고 파일이 ... 그 빈 0 바이트를 포함 내가 잘못 아니에요 경우

는, 메모리 누수가 코드 어딘가에있다

+3

코드가 의미가 없습니다. 왜 파일 자체를 바꾸고 싶습니까? – CodesInChaos

+0

플러시되지 않는 것 같습니다 – Robert

답변

1

.... 나에게이 문제에 대한 해결책을주십시오 당신이 만드는 또한 "사용()"문을 를 사용하여 시도하고 싶어 파일과 관련된 모든 객체를 폐기하십시오.

+0

사용의 요점은 객체를 처분하는 것입니다. using 문에 대해 이야기하고 객체를 폐기해야하는 것은 불필요합니다. –

+1

위의 코드 조각에서 그는 파일의 인스턴스를 만들지 않고'static' 메서드 만 사용하므로 처분 할 것이 없습니다. –

+0

@ 토니 내가 잘못했다면, 위에서 언급 한 코드가 try catch catch 블록에 의해 래핑 된 후 객체는 'finally'블록을 사용할 수없는 'using'문을 사용할 때 처분해야합니다. – RaM

2

I 너 Replace에 대해 혼란 스럽다고 생각해. 원래 파일을 새 파일로 바꾸려면 기존 파일을 삭제하기 만하면됩니다. 그렇지 않으면 원본 파일의 백업을 유지하려면 저장하기 전에 이름을 변경하십시오.

string FileExactLocation = s + str; 
    if (File.Exists(FileExactLocation)) 
    { 
     File.Delete(FileExactLocation); 
    } 
    FileUpload1.SaveAs(FileExactLocation); 

또는 : 나의 이해가 정확한지

그래서, 난 당신이 중 하나를 찾고 생각

string FileExactLocation = s + str; 
    if (File.Exists(FileExactLocation)) 
    { 
     // Rename the file adding werwe to the filename 
     File.Move(FileExactLocation, Path.Combine(FileExactLocation, "werwe")); 
    } 
    FileUpload1.SaveAs(FileExactLocation); 
0

이유가 fileUploadcontrol 값이 다시 게시 후 지울 때 ... 그리고 따라서 데이터가없는 .zip 파일을 만듭니다.이 경우바이트 스트리밍을 사용하여 파일을 업로드 할 수 있습니다 ....

관련 문제