Estoy escribiendo algo de código Java que crea un directorio y luego pone algunos archivos en ese directorio. No importa el orden en que se crean los archivos, sin embargo, para los archivos que se crearon con éxito las necesidades de directorio a la salida en primer lugar.
Quiero usar el (bastante nuevo) java.nio.Files API, ya que tiene todo un elegante conjunto de métodos para trabajar con archivos y directorios.
Si bien es bueno que la Files
clase es no bloqueante que significa que el directorio no siempre existe. ¿Hay una manera "correcta" para determinar cuando la Files.createDirectories(path)
ha completado?
No es particularmente compleja (que es por lo que al igual que el API de archivos), pero aquí algunos ejemplos de código:
Files.createDirectories(path);
Files.write(filename1, "some content".getBytes());
Files.write(filename2, "some other content".getBytes());
En lo anterior path
podría ser /tmp/blah
y filename1
= /tmp/blah/foo
y filename2
= /tmp/blah/bar
.
Obviamente, yo puedo hacer esto utilizando alguna otra clase o biblioteca (como Commons IO), pero la estructura en java.nio.Files es bastante agradable.
Creo que entendió mal. Esas operaciones son en realidad sincrónica, por lo que es bueno ir aquí. Files.write
utiliza un java.io.OutputStream
por ejemplo.
Algunos Nombre dirigió a la posible implementación de createDirectory
Linux.
En Windows, createDirectory
utiliza el CreateDirectory función de API de Windows.
WindowsNativeDispatcher.CreateDirectory(var3.getPathForWin32Calls(), var4.address() /* Security descriptor */);
Buffers
, Channels
Y Selectors
son sin bloqueo .