Wygląda na to, że tak naprawdę starasz się zrobić to, co robi FTP - kopiować pliki z jednego miejsca do drugiego. Sugerowałbym, aby znaleźć lepsze sposoby, aby to zrobić z istniejącymi bibliotekami kodu FTP.
Identyfikatory URI nie są ścieżkami systemu plików, więc nie można ich traktować jako takich. Są to adresy/lokalizatory zasobów, które, gdy przejdziesz tam z przeglądarką (lub innym klientem, który je obsługuje), uruchamiają niektóre działania zdefiniowane przez serwer, który za nimi stoi. Nie ma standardu dla tego, co robi ten serwer, stąd elastyczność usług internetowych. Dlatego też, jeśli twój serwer robi, aby żądania HTTP były przesyłane w ten sposób w celu ułatwienia kopiowania plików, będziesz musiał przetasować własne i przekazać dane pliku do żądania POST. Aby powiedzieć inaczej, (1) nie traktuj URI, tak jak są to ścieżki systemu plików - nie są, (2) znajdź bibliotekę FTP do kopiowania plików i/lub (3) jeśli naprawdę chcesz zbudować usługę internetową, która to zrobi, streścić szczegóły kopiowania plików za pomocą żądania POST. Jeśli zrobisz # 3, zrozumiesz, że twój budynek jest bardzo zbliżony do niestandardowego i że prawdopodobnie będzie działał tylko w podzbiorze witryn zgodnych z twoim projektem (tj. Tymi, które sam budujesz). Nie ma standardowego zestawu parametrów lub "kopiowania plików" za pomocą polecenia POST, że jestem świadomy tego, że możesz wykorzystać to, aby to "po prostu działać" - będziesz musiał dopasować swoje żądanie HTTP do usługi sieciowej na po stronie serwera.
Co jest w stosunku do Files.copy (InputStream, Path)? Czy adresy URL stanowią ścieżkę do świata, którym jest sieć? Czy są one bardziej jak wskaźnik? Co najprawdopodobniej zyskasz? –
@owastead, Moja biblioteka musi zwracać nieprzejrzyste ścieżki użytkownikom. Mogą kopiować te ścieżki (tylko do odczytu) do lokalnego systemu plików bez potrzeby sprawdzania, czy plik znajduje się lokalnie (tj. W bazie danych) lub zdalnie (serwer WWW). Brakuje atrybutów InputStreams, które chciałbym podać moim użytkownikom, takich jak nazwa pliku lub lastModified timestamp. – Gili
Zrozumiano, ale to, co widzą użytkownicy, niekoniecznie musi być odzwierciedlone w podstawowej implementacji. –