Я не верю, что у Java есть API для этого, и, похоже, это зависит от поддержки ОС и файловой системы, поэтому JNI может быть единственным способом, и даже тогда только в Linux.
Я сделал быстрый поиск того, что делает Cygwin, похоже, что-то вроде хака, просто для того, чтобы заставить программное обеспечение работать, создавая файл со случайным именем, а затем исключая его только из собственного списка каталогов.
Я считаю, чтоСамое близкое, что вы можете получить на простом Java, - это создать файл в каком-то другом месте (что-то вроде /proc/self/fd/...
эквивалента), а затем, когда вы закончите его писать, либо переместите его, либо символически свяжите его с конечным местоположением.Чтобы переместить файл, вы хотите, чтобы он находился в том же разделе файловой системы, чтобы содержимое файла на самом деле не нужно было копировать.Программы, просматривающие файл, скажем, /tmp/
, не увидят его до тех пор, пока не будет создано перемещение или символическая ссылка.
Возможно, вы можете поиграться с учетными записями пользователей и разрешениями файловой системы, чтобы гарантировать, что никакая другая (не SYSTEM / root) программа не сможет увидеть файл изначально, даже если они попытались посмотреть, где бы вы его ни спрятали.