Похоже, вы думаете о создании класса RemoteFileSystemProvider
специально для вашей удаленной файловой системы. Этот класс будет отражать FileSystemProvider
, предоставляя аналогичные функции для доступа к удаленной файловой системе, которую вы используете. Если это что-то, от чего ваш проект или команда могут получить многократное использование, тогда стоит отразить объект FileSystemProvider
при создании вашего кода. Это позволяет любому, кто знаком с пакетом java.nio.file
, легко понять, как использовать ваш.
Имейте в виду, однако, что FileSystemProvider
сам по себе не соответствует каким-либо интерфейсам или расширяет какие-либо классы в пакете. Это точка входа, и ваш класс также будет точкой входа. Однако, если вы имитируете структуру метода, вы будете генерировать Channel
объектов для чтения и записи, которые будут соответствовать спецификациям java.nio
, которые можно использовать повторно. Это позволит любому коду, который знает, как работать с каналами, иметь возможность работать с каналами, созданными поставщиком удаленной файловой системы.
Однако моим первым шагом в создании чего-то подобного было бы просто создать пакет специально для этой удаленной файловой системы. Он будет обрабатывать все коммуникации и реализовывать базовые функции, такие как getUploadChannel
, getDownloadChannel
, renameRemoteFile
, copyRemoteFile
, deleteRemoteFile
и любые другие необходимые функции. Это даст вам хороший здравый интерфейс, определенный для этой конкретной файловой системы и ее функциональных возможностей. Этот пакет может использоваться в любом контексте, чтобы просто реализовать соединение с этой файловой системой. Если вы убедитесь, что этот объект использует каналы для загрузки и скачивания файлов, он будет готов к интеграции с любым API, который использует java.nio
.
Только после того, как это будет завершено, протестировано и работает, я подумаю, какой интерфейс я хотел бы имитировать или реализовать для доставки остальной команде. Это гарантирует, что любые изменения в протоколе удаленной файловой системы или API Java будут иметь минимальное влияние на всю систему.