¿Tiene sentido usar `java.nio.file.spi`to implementar el acceso a un sistema de archivos remoto?

StackOverflow https://stackoverflow.com/questions/3601067

Pregunta

Básicamente escribo una aplicación que copia / mueve los archivos del sistema de archivos local a un sistema de archivos remoto a través de algún tipo FTP protocolo.

¿Sería una buena aproximación para encapsular los bits de protocolo específicas dentro de la interfaz de proveedor de servicios de sistema de archivos?

Por lo que yo entiendo que haría mi trabajo biblioteca con otras aplicaciones utilizando la nueva API IO, ¿verdad?

¿Fue útil?

Solución

Parece que usted está pensando en crear una clase RemoteFileSystemProvider específicamente para el sistema de archivos remoto. Esta clase reflejaría FileSystemProvider, proporcionando una funcionalidad similar para acceder al sistema de archivos remoto que está usando. Si esto es algo que su proyecto o equipo puede conseguir un uso repetido del, entonces vale la pena reflejar el objeto FileSystemProvider al crear el código. Esto permite que cualquiera que esté familiarizado con el paquete java.nio.file puede entender fácilmente cómo utilizar el suyo.

Tenga en cuenta, sin embargo, que FileSystemProvider misma no se ajusta a ninguna interfaz o extender las clases dentro del paquete. Es un punto de entrada, y su clase también sería un punto de entrada. Sin embargo, si imitaba la estructura método, se estaría generando Channel objetos a leer y escribir, lo que ajustarse a las especificaciones java.nio que podrían ser reutilizados. Esto permitiría que cualquier código que sabe cómo trabajar con los canales para poder trabajar con canales generados por su proveedor de sistema de archivos remoto.

Mi primer paso en la construcción de algo como esto, sin embargo, sería simplemente construir un paquete específicamente para este sistema de archivos remoto. Sería manejar toda la comunicación y poner en práctica las funciones básicas como getUploadChannel, getDownloadChannel, renameRemoteFile, copyRemoteFile, deleteRemoteFile, y cualquier otra funcionalidad es necesaria. Esto le dará una buena interfaz de sentido común definido para este sistema de archivos específico y su funcionalidad. Este paquete podría ser utilizado en cualquier contexto que acaba de poner en práctica una conexión con este sistema de archivos. Si se asegura de que este canales de usos de objetos a cargar y descargar archivos, entonces estará listo para integrarse con cualquier API que utiliza java.nio.

Sólo después de esto se terminó, probado y de trabajo, haría que considero la interfaz que me gustaría imitar o implemento para su entrega al resto del equipo. Esto asegurará que cualquier cambio en el protocolo del sistema de archivos remoto o en la API Java tendrán un impacto mínimo sobre el sistema global.

Otros consejos

Me gustaría bajar y sucio y utilizar el tipo FTP protocolo. El problema con la implementación de las API de bajo nivel sobre las API de alto nivel es que disfrazar todos los costes reales, y hacer las cosas se ven fáciles que son, de hecho, extremadamente duro, o caro. Considere seek () por ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top