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に変更しますか?元のファイルの?
safi

@Alexファイルを移動していません。c:\ .. \ .. \ a.jpgのようなブラウザからファイルパスを取得します。物理パスのファイル形式はa.Jpegなので、削除しようとすると、指定されたパスでファイルを見つけることができないエラーが発生します。だから私はそれがファイル拡張子と関係がないと考えています だから私はjpgをjpegに変換してファイルを削除しようとしています。
safi

3
@safi:ファイルの拡張子を大文字などに変更すると、ファイルがディスク上に配置されるかどうか疑問です。c:\..\..\a.jpg(あなたの例では)ファイルが本当に存在しますか?はいの場合、このファイルを削除するための十分な権限がない可能性がありますか?最後に、ファイル拡張子を置き換えるだけの場合はvar newFilePath = Path.ChangeExtension(myffile, ".Jpg");、これnewFilePathには、拡張子が変更された新しいファイル名が含まれます。物理的には、(ディスク上の)ファイル名は変更されません。
Alex

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.MovePath.ChangeExtension。涼しい !:-)
レジェンド

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.