9

JFileChooser を使用して画像を保存しようとしています。ユーザーが画像をjpgとして保存できるようにしたいだけです。ただし、.jpg と入力しないと、画像として保存されません。どうにかしてファイルの最後に「.jpg」を追加することはできますか?

File file = chooser.getSelectedFile() + ".jpg";  

ファイルに文字列を追加しているため、機能しません。

4

3 に答える 3

13

完了したら、 を に変換して、新しい を作成してみませFileStringFile?

File f = chooser.getSelectedFile();
String filePath = f.getAbsolutePath();
if(!filePath.endsWith(".jpg")) {
    f = new File(filePath + ".jpg");
}

.jpg既にある場合は追加する必要はありません。

于 2012-05-06T14:54:08.757 に答える
4

選択したファイルに拡張子を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" ); 
于 2012-05-06T14:59:40.170 に答える
1

最善のアプローチは、受け入れ可能なエントリを確認することです。見つからない場合は、その上に書き込むのではなく、ファイル拡張子を置き換えます。

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);
}
于 2012-05-06T14:54:14.463 に答える