On 10/05/2016 08:13, Chan, Sunny wrote:
The available() and sync() are the only native methods in the FileInputStream that has
not been "wrapped".
Our use case is that we have an internal storage implementation and we would
like to be able to provide support for older applications that use java.io api
without modify the apps to use our NIO.2 Filesystem implementation. Without
these method wrapped it is difficult to instrument them and redirect calls as
needed.
A longer term goal is to investigate and see whether we can find a way to
divert all the old java.io APIs to an NIO.2 filesystem implementation. However
this is more complex and will involve a much bigger change and we will propose
a JEP once we are confident that can be done.
Just an FYI that back in JDK 7 then we had an initial prototype
implementation of java.io.File/FIS/FOS/RAF that was based on the new
file system API. As I recall, the concerns/issues at the time were:
1. Compatibility, esp. Windows, where the new API/implementation does
the right thing and so results in changes in behavior.
2. Startup as the new API/implementation requires loading additional
classes at startup. In JDK 9 then the jimage container and the module
system use the new API and so we are loading them anywhere so this issue
may have gone away.
3. FIS/FOS ctors/getFD which won't have an equivalent or it specific to
the default provider.
It would definitely be interesting to have another go at this.
-Alan