2016-08-02 83 views
-2

我想这样一个有没有办法确定输入流是否只读?

File file =new File(inputStream) // not possible though. file.canWrite

,但我似乎无法找到解决输入流转换为一个文件,而无需在其他地方写它。谢谢!

+0

你看起来有东西倒退。你会不会'InputStream is = new FileInputStream(new File(“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

Hi fge,感谢您的回复。我很感激。目前我的方法接收一个代表文件内容的DataHandler对象。我正在考虑一种方法来确定数据处理程序中的内容文件是否只读。 –

+0

@WayneDeLosAngeles:这又是一个倒退的想法。你只能通过阅读才能阅读,而不是写作。 –

+0

@WayneDeLosAngeles你怎么知道这个特殊的'DataHandler'代表一个文件的内容?这是你的API吗?另一个API?它是否被迫将文件作为“后端”来提供“InputStream”?而且,也许更重要的是,你为什么首先关心? – fge

相关问题