JFileChooser を使用して画像を保存しようとしています。ユーザーが画像をjpgとして保存できるようにしたいだけです。ただし、.jpg と入力しないと、画像として保存されません。どうにかしてファイルの最後に「.jpg」を追加することはできますか?
File file = chooser.getSelectedFile() + ".jpg";
ファイルに文字列を追加しているため、機能しません。
JFileChooser を使用して画像を保存しようとしています。ユーザーが画像をjpgとして保存できるようにしたいだけです。ただし、.jpg と入力しないと、画像として保存されません。どうにかしてファイルの最後に「.jpg」を追加することはできますか?
File file = chooser.getSelectedFile() + ".jpg";
ファイルに文字列を追加しているため、機能しません。
完了したら、 を に変換して、新しい を作成してみませFile
んString
かFile
?
File f = chooser.getSelectedFile();
String filePath = f.getAbsolutePath();
if(!filePath.endsWith(".jpg")) {
f = new File(filePath + ".jpg");
}
.jpg
既にある場合は追加する必要はありません。
選択したファイルに拡張子をFile
追加し、拡張子を追加してオブジェクトを作成します。
String withExtension = chooser.getSelectedFile().getAbsolutePath() + ".jpg";
File file = new File( withExtension )
あなたの質問に暗示されていますが、すべてのベースをカバーするためだけです:最初に拡張機能がまだ存在しないかどうかを確認する必要があります。
String withExtension = chooser.getSelectedFile().getAbsolutePath();
if( !withExtension.toLowerCase().endsWith( ".jpg" ) )
withExtension += ".jpg";
[上記に「.jpeg」を追加することをお勧めしif
ます - これは JPEG ファイルの有効な拡張子です]
以下のコードは、機能する場合と機能しない場合があります。File
コンパイルできるようにするtoString()
がありますが、取得する正確なパス名を制御できる上記の方法を使用したいと思います。オブジェクトのtoString()
ドキュメントは、File
それが正確に何を返すかについて私には少し不明確です。このような場合、確実に必要なものを返すことがわかっている関数を呼び出すことを好みます。
File file = new File( chooser.getSelectedFile() + ".jpg" );
最善のアプローチは、受け入れ可能なエントリを確認することです。見つからない場合は、その上に書き込むのではなく、ファイル拡張子を置き換えます。
File f = chooser.getSelectedFile().getAbsolutePath();
String path = f.getAbsolutePath();
if (!path.matches(".*\\.(jpg|jpeg)")) {
// If the extension isn't there. We need to replace it
path = path.substring(0, path.lastIndexOf(".") + 1).concat("jpg");
f = new File(path);
}