2012-03-08 9 views
0

を使用してOS Xでのファイルの拡張子を取得します。私は私のJavaコードでファイルの拡張子を取得したいのJava

File f = new File(....); 
String name = f.getName(); 
int pos = name.lastIndexOf('.'); 
String ext = name.substring(pos+1); 

私はこのコードを試してみましたが、それはそれが動作Windowsでは、OS Xのライオンでは動作しませんでした。

UPDATE 例 のための私は、このコードで27 PM拡張子を取得し、この名前Screen Shot 2012-02-23 at 1.26.27 PM と私のデスクトップでのPNGファイルを持っています。

+0

** OS X **で表示されるエラーは何ですか? –

+1

「うまくいかない」とはどういう意味ですか?結果として得られる 'ext'の値は何ですか?何を期待していますか? –

+0

何が問題なのですか?あなたはそれに何のインプットを与えたのですか? – Kevin

答えて

1

あなたのコードは、実行するように頼んだものです。ファイル上にというファイル名のという拡張子が見つかりました。問題は、にはに ".png"という拡張子が付いているはずの愚かな名前のファイルがあるということです。コードでこれを処理したい場合は、ファイルヘッダーの解釈を調べて、ファイルのタイプを確認する必要があります。これは、実際には.pngファイルであることをOS Xが認識していると思われます。

0

UNIXではすべてのファイルに拡張子が付いているわけではありませんが、スタックトレースを提供するか、またはより明確な定義をで実行できない場合は、私には分かりません。

私はあなたのコードを取り、サンプルを作成します。

localhost:Desktop oscarryz$ cat Fe.java 
import java.io.File; 
import static java.lang.System.out; 

class Fe { 
    public static void main(String ... args) { 
     File f = new File("Screen Shot 2012-03-06 at 10.03.35 PM.png"); 
     out.println("File exists: " + f.exists()); 
     out.println("Extension: " + 
      f.getName().substring(f.getName().lastIndexOf('.')+1) 
     ); 
    } 
} 
localhost:Desktop oscarryz$ javac Fe.java 
localhost:Desktop oscarryz$ java Fe 
File exists: true 
Extension: png 

ファイル名を渡すときに表示さメカニズムは完全にOSX上で作品を行うので、あなたはおそらく、拡張子を落としています。

0

OSX SnowLeopardがどのような出力を得ているのかは、これが正常に動作していることに注意してください。オペレーティングシステムごとにファイルセパレータを選択する必要があります。それはあなたがファイル名を表示していないので問題になる可能性があります。ファイルセパレータを確認してください。

ソリューションはgarsinfotech.comラボ