Проекты часто должны получить доступ к общим папкам, таким как общие папки, хранящие фотографии, файлы и т. Д. Итак, как читать и писать общие папки Windows с помощью Java?
Java может использовать Framework JCIFS для чтения и записи общих папок Windows. Эта структура позволяет нам получить доступ к удаленным папкам, таким как доступ к локальным папкам.
URL JCIFS: http://jcifs.samba.org/
JCIFS - это структура с открытым исходным кодом, разработанная с использованием чистой Java, доступа к удаленным папкам через протокол SMB. Эта структура поддерживает как общие папки Windows, так и общие папки Linux. Тем не менее, папки общих Linux требуют установки программного обеспечения SAMBA Service (официальный веб -сайт: http://www.samba.org/).
SMB (Block Block Messages) - это протокол связи для обмена файлами и принтерами в локальной сети. Он предоставляет услуги обмена файлами, принтерами и другими ресурсами между различными компьютерами в локальной сети. Протокол SMB - это протокол клиента/сервера, через который клиенты могут получить доступ к общим файловым системам, принтерам и другим ресурсам на сервере. Установив «NetBios Over TCP/IP», Samba может не только делиться ресурсами с местными сетевыми хостами, но и с компьютерами по всему миру.
В этой статье в основном узнает, как использовать Java для доступа к общим папкам для Windows.
Во -первых, найдите машину Windows, создайте папку: SharedFolder в любом месте и установите ее для обмена, и установите общее имя пользователя: Share, пароль: администратор.
(Как установить общую папку под Windows 7: Как установить общую папку под Windows 7: //www.vevb.com/os/windows/78034.html)
Будь то общая папка для Windows или Linux, код для использования Java SMB для доступа к общим папкам одинаковы, но способ, которым Windows и Linux настраивают общие папки, отличается.
Тестовый код заключается в следующем:
InputStream in = null; OutputStream Out = null; try {// Получить файл изображения localfile = new File ("c:/testjpg"); String remotephotourl = "smb: // share: admin@11/sharedfolder/"; // Общий каталог для хранения изображений SimpleDateFormat fmt = new SimpleDateFormat ("yyyyMmddhhmmsssss_"); Smbfile remotefile = new smbfile (remotephotourl + "/" + fmtformat (new date ()) + localfilegetname ()); remoteFileConnect (); // попытаться подключиться к = new BufferedInputStream (New FileInputStream (LocalFile)); out = new BufferedOutputStream (новый SMBFileOutputStream (RemoteFile)); Byte [] buffer = новый байт [4096]; int len = 0; // Читать длину while (((len = inred (buffer, 0, bufferlength))! = -1) {OutWrite (Buffer, 0, Len); } utflush (); // Свежий буферный выходной поток} Catch (Exception e) {String msg = "произошла ошибка:" + eGetLocalizedMessage (); SystemOutPrintln (MSG); } наконец {try {if (out! = null) {OutClose (); } if (in! = null) {inclose (); }} catch (Exception e) {}}В приведенном выше коде используется класс SMBFILE, предоставленный Framework JCIFS. Этот класс похож на класс файлов Java. Использование объектов этого класса может обрабатывать чтение и написание удаленных файлов. Используйте объект файла, чтобы прочитать локальный файл, а затем используйте объект SMBFile для записи в удаленный файл. Метод smbfile Connect () может попытаться подключиться к удаленной папке. Если учетная запись или пароль неверны, будет брошено исключение подключения.
При загрузке удаленного файла используйте объект SMBFILE, чтобы прочитать удаленный файл. Код заключается в следующем:
InputStream in = null; BytearrayOutputStream Out = null; try {// Создать remote файловой объект string remotephotourl = "smb: // share: admin@11/sharedfolder/testjpg"; Smbfile remotefile = new smbfile (remotephotourl); remoteFileConnect (); // Попробуйте подключить // Создать поток файлов в = new BufferedInputStream (новый SMBFileInputStream (remoteFile)); out = new BytearrayOutputStream ((int) remotefileLength ()); // Читать содержимое файла byte [] buffer = new Byte [4096]; int len = 0; // Читать длину while ((len = inred (buffer, 0, bufferlength))! = - 1) {OutWrite (Buffer, 0, Len); } utflush (); // Снимите буферизованный выходной поток return outbytearray (); } catch (Exception e) {string msg = "Ошибка загрузка удаленного файла:" + eGetLocalizedMessage (); SystemOutPrintln (MSG); } наконец {try {if (out! = null) {OutClose (); } if (in! = null) {inclose (); }} catch (Exception e) {}}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.