Започнах с изискване за четене и писане на файлове в от/в директория на отдалечена Ubuntu машина.
Първо, написах Java програма, която може да чете, записва файлове от споделена папка на отдалечена Windows машина, т.е. в LAN. Тук нещо подобно работи на моята (локална) машина с Windows:
File inputFile = new File(
"\\172.17.89.76\EBook PDF");/*ignore the syntax errors, the loc is just for the idea*/
Сега, когато обмислям отдалечена Ubuntu машина, очевидно не мога да направя нещо подобно, тъй като машината не е в LAN (Не съм сигурен дали това може да се направи, дори ако е в LAN! ). Затова опитах следните подходи:
- Използване на Jsch, установяване на доверие между две машини (локален - отдалечен Linux, отдалечен Linux - отдалечен Linux) и писане на файл с помощта на sftp. (готово)
- Изпълнение на сокети на двете машини - един изпращач, един получател (и двете Java) (готово)
- Опит за постигане на I/O, подобен на кодовия фрагмент за Windows (LAN) машини (не е постигнат)
Докато правех всичко това, имах много запитвания, прочетох много публикации и т.н. и почувствах, че пропускам нещо в основите:
- За постигане на IO ще е необходима някаква помощна програма за изграждане на доверие (между две машини). Но накрая искам да напиша код като дадения фрагмент, независимо от машините, мрежата и т.н.
- Решението Jsch и другите предложени (използване на http, ftp и т.н. през URL) най-накрая използват някои услуги, които се изпълняват на отдалечената машина. С други думи, НЕ е, че Java IO се използва за достъп до отдалечената файлова система - това не ме привлича, тъй като разчитам на услуги, вместо да използвам добрия стар I/O.
- Samba, SSHFS също се появи на сцената, само за да добави още повече объркването ми. Но не ги виждам като решения на моята цел!
За да повторя, искам да напиша код, използвайки Java I/O (обикновен или nio, и двете са добре), който просто може да чете, пише отдалечени файлове, без да използва услуги през протоколи като ftp, http и т.н. или socket sender- модел приемника. Моето очакване валидно ли е?
- Ако не, защо и какво е най-доброто, което мога да направя, за да чета/записвам отдалечени файлове с помощта на Java?
- Ако да, как да постигнете същото!
P.S: Моля, коментирайте, в случай че трябва да уточня, за да задам точно въпроса си!