2011-12-07 15 views
0

私は少し問題に気づいた。私のアプリケーションが取得するのはファイルのURIです。 file:///C:/temp/somefolder/somedocument.txtを文字列として返します。JavaのURIから適切なフォルダハンドルを取得する方法は?

私のアプリケーションで何をしなければならないのかということは、フォルダの中にさらにファイルがないかチェックして処理することです。これを行うには、私は通常のように何かをするだろう

File file = new File(myURI); 
File folder = file.getParentFile(); 
File[] peers = folder.getParentFile().listFiles(); 

あなたがURIを使用すると、これはまったくうまくいかないようです。 .listFilesは、たとえ私がFile()フォルダのURIへのハンドルを開いても、nullを返します。

この問題を回避する方法はありますか?

P.S:File又はjava.net.URIの方法のいずれも、URIではない絶対パスを返しません。)

+0

コードは正常です。例外がスローされた場合は、スタックトレースを投稿してください。 –

+0

は、タイプURI、または文字列のオブジェクトです。前者でなければなりません。 – bmargulies

+0

私はストリングを取得しています。とにかく例外はありません。 listFilesは単にヌルです;) – Michael

答えて

1

あなたmyURIが実際URIString表現です。あなたが呼んでいるFileのコンストラクタは、URIっぽい値ではありません、

public File(String pathname) 

pathnameビットです。これは私のために働いた

File file = new File(myURI); 
File[] peers = new File(file.getParent()).listFiles(); 

File file = new File(new URI(myURI)); 
+0

ありがとうございました。これは実際に働いた。不思議にも、ファイルハンドルを開き、それを使って作業することは、URI-ish Stringをパラメータとして完全にうまく動作します。あなたがディレクトリ操作を試みる場合にのみ、それは奇妙な動作を開始します... – Michael

0

てみてみてください。しかし、コードを使用すると、getParentFile()を呼び出すとNPEを取得します。

関連する問題