Les projets doivent souvent accéder aux dossiers partagés, tels que les dossiers partagés stockant des photos, des fichiers, etc. Alors, comment lire et écrire des dossiers partagés Windows à l'aide de Java?
Java peut utiliser le framework JCIFS pour lire et écrire des dossiers partagés Windows. Ce cadre nous permet d'accéder à des dossiers à distance comme l'accès aux dossiers locaux.
URL de JCIFS: http://jcifs.samba.org/
JCIFS est un framework open source développé à l'aide de Java pur, accédant aux dossiers distants via le protocole SMB. Ce cadre prend en charge les dossiers partagés Windows et les dossiers partagés Linux. Cependant, les dossiers partagés Linux nécessitent l'installation du logiciel de service Samba (site officiel: http://www.samba.org/).
SMB (serveur Messages Block) est un protocole de communication pour partager des fichiers et des imprimantes sur un réseau local. Il fournit des services de partage pour les fichiers, les imprimantes et autres ressources entre différents ordinateurs du réseau local. Le protocole SMB est un protocole client / serveur à travers lequel les clients peuvent accéder aux systèmes de fichiers partagés, aux imprimantes et autres ressources sur le serveur. En définissant "NetBios sur TCP / IP", Samba peut non seulement partager des ressources avec des hôtes de réseau locaux, mais aussi avec des ordinateurs du monde entier.
Cet article apprend principalement à utiliser Java pour accéder aux dossiers partagés pour Windows.
Tout d'abord, trouvez une machine Windows, créez un dossier: SharedFolder à n'importe quel endroit et définissez-le pour partager et définir le nom d'utilisateur partagé: partager, mot de passe: admin.
(Comment définir un dossier partagé sous Windows 7: Comment définir un dossier partagé sous Windows 7: //www.vevb.com/os/windows/78034.html)
Qu'il s'agisse d'un dossier partagé pour Windows ou Linux, le code d'utilisation de Java SMB pour accéder aux dossiers partagés est le même, mais la façon dont Windows et Linux configurent les dossiers partagés sont différents.
Le code de test est le suivant:
InputStream dans = null; OutputStream out = null; essayez {// obtenir le fichier image localfile = new file ("c: / testjpg"); String Remotephotourl = "smb: // partager: admin @ 11 / sharedfolder /"; // Répertoire partagé pour stocker des images SimpledateFormat fmt = new SimpledateFormat ("yyyymmddhhmmsssss_"); SMBFILE RemoteFile = new SMBFile (RemotePhotourl + "/" + fmtFormat (new Date ()) + localFileGetName ()); RemoteFileConnect (); // Essayez de se connecter dans = new BufferedInputStream (new FileInputStream (localFile)); out = new BufferedOutputStream (nouveau SMBFILEOutputStream (RemoteFile)); octet [] tampon = nouveau octet [4096]; int len = 0; // Lire la longueur while ((Len = inRead (tampon, 0, bufferLength))! = -1) {outwrite (tampon, 0, len); } OutFlush (); // Fresque le flux de sortie tamponné} catch (exception e) {String msg = "Erreur s'est produit:" + egetLocalizedMessage (); SystemOutPrintln (MSG); } enfin {try {if (out! = null) {outclose (); } if (in! = null) {incose (); }} catch (exception e) {}}Dans le code ci-dessus, la classe SMBFile fournie par le cadre JCIFS est utilisée. Cette classe est similaire à la classe de fichiers Java. L'utilisation d'objets de cette classe peut gérer la lecture et l'écriture de fichiers distants. Utilisez l'objet de fichier pour lire le fichier local, puis utilisez l'objet SmbFile pour écrire dans le fichier distant. La méthode Connect () de SMBFile peut essayer de se connecter à un dossier distant. Si le compte ou le mot de passe est mauvais, une exception de connexion sera lancée.
Lors du téléchargement d'un fichier distant, utilisez l'objet SmbFile pour lire le fichier distant. Le code est le suivant:
InputStream dans = null; BytearrayoutputStream out = null; essayez {// créer une chaîne d'objet de fichier distant Remotephotourl = "smb: // partager: admin @ 11 / sharedfolder / testjpg"; SMBFILE Remotefile = nouveau SMBFile (Remotephotourl); RemoteFileConnect (); // Essayez de connecter // Créer un flux de fichiers dans = new BufferedInputStream (new SMBFileInputStream (RemoteFile)); out = new bytearrayoutputStream ((int) RemoteFileLength ()); // Lire le contenu du fichier byte [] buffer = nouveau octet [4096]; int len = 0; // Lire la longueur while ((Len = inRead (tampon, 0, bufferLength))! = - 1) {outwrite (tampon, 0, len); } OutFlush (); // rincer le flux de sortie tamponné Retour OuttoByTearray (); } catch (exception e) {String msg = "Erreur téléchargement du fichier distant:" + egetLocalizedMessage (); SystemOutPrintln (MSG); } enfin {try {if (out! = null) {outclose (); } if (in! = null) {incose (); }} catch (exception e) {}}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.