C #을 사용하여 파일 확장명 변경


98

pdf, tiff, jpeg, bmp 등 많은 파일 형식이 있습니다. 등. 내 질문은 어떻게 파일 확장자를 변경할 수 있습니까? 나는 이것을 시도했다 :

my file= c:/my documents/my images/cars/a.jpg;
string extension = Path.GetExtension(myffile);
myfile.replace(extension,".Jpeg");

파일 유형에 관계없이 지정하는 형식은 파일 이름과 같아야합니다. 그러나 작동하지 않습니다. 같은 브라우저에서 파일 경로를 얻고 파일 c:\..\..\a.jpg형식은 a.jpeg. 따라서 삭제하려고 할 때 오류가 발생 Cannot find the file on specified path'합니다.. 따라서 일치하지 않는 파일 확장자와 관련이 있다고 생각합니다. 그래서, 변환하려고 .jpg.jpeg다음 파일을 삭제합니다.


어떻게 작동하지 않습니까 (컴파일과 멀어지는 것 제외)?
Albin Sunnanbo 2011 년

답변:


219

이 : Path.ChangeExtension방법은. 예 :

var result = Path.ChangeExtension(myffile, ".jpg");

확장을 물리적으로 변경하려면 다음 File.Move방법을 사용할 수 있습니다 .

File.Move(myffile, Path.ChangeExtension(myffile, ".jpg"));

확장명이 jpg로 변경됩니까? 원본 파일의?
사피

@Alex 파일을 이동하지 않고 c : \ .. \ .. \ a.jpg와 같은 broswer에서 파일 경로를 얻고 실제 경로의 파일 형식은 a.Jpeg이므로 삭제하려고 할 때 지정된 경로에서 파일을 찾을 수 없다는 오류가 발생합니다. 그래서 파일 확장자가 일치하지 않는 것과 관련이 있다고 생각합니다. 그래서 jpg를 Jpeg로 변환하고 파일을 삭제하려고합니다.
사피

3
@safi : 파일 확장자를 대문자로 변경하면 디스크에서 파일을 찾을 수 있을지 의심됩니다. c:\..\..\a.jpg(귀하의 예에서) 파일 이 실제로 존재합니까? 그렇다면이 파일을 삭제할 권한이 없습니까? 마지막으로 파일 확장자를 바꾸고 싶다면 var newFilePath = Path.ChangeExtension(myffile, ".Jpg");; (가) newFilePath변경 확장자를 가진 새 파일 이름을 포함, 물리적, 파일 이름 (디스크) 변경되지 않습니다.
알렉스

1
@safi : 참조, var newPath = Path.ChangeExtension("c:/my documents/my images/cars/a where a is a.jpg", string.Empty)첫 번째 메소드 매개 변수로 정의 된 경로에서 확장자를 제거합니다. newPath문자열 변수가 포함 c:/my documents/my images/cars/a where a is a.이 작업 후 값입니다.
Alex

1
우리가 코드를 만드는 데는 많은 일이 있지만 이미 .NET fx에 존재합니다. File.Move& Path.ChangeExtension. 멋있는 ! :-)
Legends

17

이름을 바꾸려면 파일을 이동해야합니다. 예제 코드에서 파일이 아닌 문자열 만 변경합니다.

myfile= "c:/my documents/my images/cars/a.jpg";
string extension = Path.GetExtension(myffile); 
myfile.replace(extension,".Jpeg");

myfile (문자열) 만 변경하고 있습니다. 실제 파일을 이동하려면 다음을 수행해야합니다.

FileInfo f = new FileInfo(myfile);
f.MoveTo(Path.ChangeExtension(myfile, ".Jpeg"));

FileInfo.MoveTo를 참조하십시오.


파일을 이동하지 않고 c : \ .. \ .. \ a.jpg와 같은 브라우저에서 파일 경로를 얻고 실제 경로의 파일 형식은 a.Jpeg이므로 삭제하려고하면 표시됩니다. 오류가 지정된 경로에서 파일을 찾을 수 없습니다. 그래서 파일 확장자가 일치하지 않는 것과 관련이 있다고 생각합니다. 그래서 jpg를 Jpeg로 변환하고 파일을 삭제하려고합니다
safi

첫 번째 코드는 대체하지 않습니다. 해야 할 일myfile=myfile.Replace(extension,".Jpeg");
KansaiRobot


4

GetFileNameWithoutExtension이름에서 알 수 있듯이 메서드 는 파일의 확장자를 반환하지 않습니다. 귀하의 경우에는 "a"만 반환합니다. 해당 결과에 ".Jpeg"를 추가하려고합니다. 그러나 이미지 파일의 메타 데이터가 다르고 쉽게 변환 할 수 없기 때문에 다른 수준에서는 이상하게 보입니다.


0

파일 형식을 png로 변환

string newfilename , 
 string filename = "~/Photo/"  + lbl_ImgPath.Text.ToString();/*get filename from specific path where we store image*/
 string newfilename = Path.ChangeExtension(filename, ".png");/*Convert file format from jpg to png*/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.