Los proyectos a menudo necesitan acceder a carpetas compartidas, como carpetas compartidas que almacenan fotos, archivos, etc. Entonces, ¿cómo leer y escribir carpetas compartidas con Windows usando Java?
Java puede usar el marco JCIFS para leer y escribir carpetas compartidas de Windows. Este marco nos permite acceder a carpetas remotas como acceder a carpetas locales.
URL de JCIFS: http://jcifs.samba.org/
JCIFS es un marco de código abierto desarrollado con Java puro, que accede a carpetas remotas a través del protocolo SMB. Este marco admite carpetas compartidas de Windows y carpetas compartidas de Linux. Sin embargo, las carpetas compartidas de Linux requieren la instalación del software de servicio Samba (sitio web oficial: http://www.samba.org/).
SMB (Bloque de mensajes del servidor) es un protocolo de comunicación para compartir archivos e impresoras en una red de área local. Proporciona servicios compartidos para archivos, impresoras y otros recursos entre diferentes computadoras en la red de área local. El protocolo SMB es un protocolo de cliente/servidor a través del cual los clientes pueden acceder a sistemas de archivos compartidos, impresoras y otros recursos en el servidor. Al establecer "NetBios sobre TCP/IP", Samba no solo puede compartir recursos con hosts de red locales, sino también con computadoras de todo el mundo.
Este artículo aprende principalmente cómo usar Java para acceder a carpetas compartidas para Windows.
Primero, busque una máquina de Windows, cree una carpeta: SharedFolder en cualquier ubicación y configure en compartir y configure el nombre de usuario compartido: Share, Password: Admin.
(Cómo configurar una carpeta compartida en Windows 7: Cómo configurar una carpeta compartida en Windows 7: //www.vevb.com/os/windows/78034.html)
Ya sea que se trate de una carpeta compartida para Windows o Linux, el código para usar Java SMB para acceder a las carpetas compartidas es la misma, pero la forma en que Windows y Linux configuran las carpetas compartidas es diferente.
El código de prueba es el siguiente:
InputStream in = null; OutputStream out = null; Pruebe {// Obtenga el archivo de imagen localfile = nuevo archivo ("c:/testjpg"); String remotephotourl = "smb: // share: admin@11/SharedFolder/"; // Directorio compartido para almacenar imágenes SimpleDateFormat fmt = new SimpleDateFormat ("yyyymmddhhmmssss_"); SMBFILE ROBAYFILE = new SMBFile (remOtEpHoToUrl + "/" + fmtFormat (new Date ()) + localFileGetName ()); RemoteFileConnect (); // intenta conectarte en = new BufferedInputStream (nuevo FileInputStream (LocalFile)); out = new BufferedOutputStream (nuevo SMBFileOutputStream (RemoteFile)); byte [] buffer = new Byte [4096]; int len = 0; // Leer longitud while ((len = inRead (buffer, 0, bufferLength))! = -1) {outWrite (buffer, 0, len); } outlush (); // fresca el flujo de salida tamponado} capt (excepción e) {string msg = "Error ocurrió:" + egetLocalizedMessage (); SystemOutPrintln (MSG); } finalmente {try {if (out! = null) {outClose (); } if (in! = null) {inclose (); }} capt (excepción e) {}}En el código anterior, se utiliza la clase SMBFile proporcionada por el marco JCIFS. Esta clase es similar a la clase de archivo Java. El uso de objetos de esta clase puede manejar la lectura y la redacción de archivos remotos. Use el objeto Archivo para leer el archivo local y luego use el objeto SMBFile para escribir en el archivo remoto. El método SMBFile Connect () puede intentar conectarse a una carpeta remota. Si la cuenta o la contraseña es incorrecta, se lanzará una excepción de conexión.
Al descargar un archivo remoto, use el objeto SMBFile para leer el archivo remoto. El código es el siguiente:
InputStream in = null; BytearRayOutputStream out = null; Pruebe {// Cree una cadena de objeto de archivo remoto remoteThotourl = "smb: // share: admin@11/sharedfolder/testjpg"; SMBFILE REMPEDFILE = new SMBFile (remOtEpHoToUrl); RemoteFileConnect (); // intente conectar // crear flujo de archivo en = new BufferedInputStream (nuevo SMBFileInputStream (RemoteFile)); out = new ByTearRaReOutputStream ((int) RemoteFilelength ()); // Leer contenido de archivo byte [] buffer = new Byte [4096]; int len = 0; // Leer longitud while ((len = inRead (buffer, 0, bufferLength))! = - 1) {outWrite (buffer, 0, len); } outlush (); // enjuague el flujo de salida tamponado return outtobyTearray (); } Catch (Exception e) {String msg = "Error de descarga de archivo remoto:" + egetLocalizedMessage (); SystemOutPrintln (MSG); } finalmente {try {if (out! = null) {outClose (); } if (in! = null) {inclose (); }} capt (excepción e) {}}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.