2016-08-02 4 views
-2

は私が入力ストリームがreadOnlyかどうかを判断する方法はありますか?

File file =new File(inputStream) // not possible though. file.canWriteのようなものを考えていたが、私は他の場所でそれを記述することなく、ファイルに入力ストリームを変換するためのソリューションを見つけるように見える傾けます。ありがとうございました!

+0

あなたは後方に物事を持っているように見えます。 'InputStream is = new FileInputStream(新しいファイル(someFile.foo")); '? –

+0

またはそれ以上 - 包括的にBufferedInputStreamに入れてください –

答えて

5

あなたはそれを後方に持っているようです。

つまり、InputStreamは、そのバイトのストリームがどこから来ていても、バイトのストリームを読み取ることのみを許可します。これは、ファイル、ネットワークソケット、またはカスタムプロバイダーからのものである可能性があります。とにかくInputStreamからのみ読むことができます。あなたがここにファイルで作業しているように見えるので

、あなただけ使用して、現在のプロセスを実行しているユーザーのためにファイルが読み込まれているかどうかを確認することができます。

final Path path = Paths.get("path/to/my/file"); 

// is it writable? If no, consider "read only" 
final boolean canWrite = Files.isWritable(path); 

をそしてPathからInputStreamを開くには、使用:

try (
    final InputStream in = Files.newInputStream(path); 
) { 
    // work with "in" 
} 
+0

こんにちは、お返事ありがとうございます。それは有り難いです。現在、私のメソッドは、ファイルの内容を表すDataHandlerオブジェクトを受け取ります。私は、データハンドラ内のコンテンツファイルがreadOnlyであるかどうかを判断する方法を考えていました。 –

+0

@WayneDeLosAngeles:もう一度、それは後ろ向きに考えている。あなたはそれを読んだだけで読むことができ、書いてはいけません。 –

+0

@WayneDeLosAngelesこの特定の 'DataHandler'がファイルの内容を表していることをどうお知りしますか?それはあなたのAPIですか?もう一つのAPI? 'InputStream'を提供するためにファイルを"バックエンド "として持つことは強制されますか?そして、おそらくもっと重要なのは、なぜあなたは最初に気にしますか? – fge

関連する問題