Java 7提出了一个基于NIO的文件系统,这个NIO文件系统和阻塞IO文件系统两者是完全独立的。java.nio.file.spi.FileSystemProvider
对文件的封装和java.io.FileSystem
同理。
NIO的文件操作在不同的系统的最终实现类也是不一样的,比如Mac的实现类是: sun.nio.fs.UnixNativeDispatcher
,而Windows的实现类是sun.nio.fs.WindowsNativeDispatcher
。
合理的利用NIO文件系统这一特性我们可以绕过某些只是防御了java.io.FileSystem
的WAF
/RASP
。