Os projetos geralmente precisam acessar pastas compartilhadas, como pastas compartilhadas que armazenam fotos, arquivos etc. Então, como ler e escrever pastas compartilhadas do Windows usando Java?
O Java pode usar a estrutura JCIFS para ler e gravar pastas compartilhadas do Windows. Essa estrutura nos permite acessar pastas remotas, como acessar pastas locais.
URL do JCIFS: http://jcifs.samba.org/
O JCIFS é uma estrutura de código aberto desenvolvido usando Java Pure, acessando pastas remotas através do protocolo SMB. Essa estrutura suporta pastas compartilhadas do Windows e pastas compartilhadas Linux. No entanto, as pastas compartilhadas do Linux exigem a instalação do software de serviço Samba (site oficial: http://www.samba.org/).
SMB (Mensagens do servidor Block) é um protocolo de comunicação para compartilhar arquivos e impressoras em uma rede local. Ele fornece serviços de compartilhamento para arquivos, impressoras e outros recursos entre diferentes computadores na rede local da área. O protocolo SMB é um protocolo de cliente/servidor através do qual os clientes podem acessar sistemas de arquivos compartilhados, impressoras e outros recursos no servidor. Ao definir "Netbios sobre TCP/IP", o Samba pode não apenas compartilhar recursos com hosts de rede local, mas também com computadores em todo o mundo.
Este artigo aprende principalmente como usar o Java para acessar pastas compartilhadas para Windows.
Primeiro, encontre uma máquina Windows, crie uma pasta: compartilhou em qualquer local e defina -a para compartilhar e defina o nome de usuário compartilhado: compartilhe, senha: admin.
(Como definir uma pasta compartilhada no Windows 7: como definir uma pasta compartilhada no Windows 7: //www.vevb.com/os/windows/78034.html)
Seja uma pasta compartilhada para Windows ou Linux, o código para usar o Java SMB para acessar pastas compartilhadas é o mesmo, mas a maneira como o Windows e o Linux configuram pastas compartilhadas é diferente.
O código de teste é o seguinte:
InputStream in = null; OutputStream out = null; tente {// obtenha o arquivo de imagem localfile = new File ("c:/testJpg"); String remotephoTourl = "sMb: // compartilhar: admin@11/sharedfolder/"; // diretório compartilhado para armazenar imagens simpledateFormat fmt = new SimpleDateFormat ("yyyymmddhhmmssss_"); SMBFILE REMOTEFILE = NOVO SMBFILE (RemotephoTourl + "/" + FMtformat (new Date ()) + localFileGetName ()); remotefileConnect (); // tente se conectar em = new bufferInputStream (new FileInputStream (LocalFile)); out = new BufferedOutputStream (new SMBFileOutputStream (RemoteFile)); byte [] buffer = novo byte [4096]; int len = 0; // Leia o comprimento while ((len = inreath (buffer, 0, bufferLength))! = -1) {outWrite (buffer, 0, len); } outflush (); // fresco o fluxo de saída em buffer} catch (exceção e) {string msg = "Ocorreu o erro:" + egetLocalizedMessage (); SystemOutPrintln (msg); } finalmente {tente {if (out! = null) {outClose (); } if (in! = null) {inclose (); }} catch (Exceção e) {}}No código acima, a classe SMBFile fornecida pela estrutura JCIFS é usada. Esta classe é semelhante à classe de arquivo java. O uso de objetos desta classe pode lidar com a leitura e a escrita de arquivos remotos. Use o objeto de arquivo para ler o arquivo local e, em seguida, use o objeto SMBFILE para gravar no arquivo remoto. O método do SMBFILE CONNECT () pode tentar se conectar a uma pasta remota. Se a conta ou senha estiverem erradas, uma exceção de conexão será lançada.
Ao baixar um arquivo remoto, use o objeto SMBFILE para ler o arquivo remoto. O código é o seguinte:
InputStream in = null; ByteArrayOutputStream Out = null; tente {// Crie Arquivo Remoto Objeto String RemotephoTourl = "SMB: // Compartilhar: Admin@11/SharedFolder/testJpg"; SMBFILE REMOTEFILE = novo SMBFILE (RemotephoTourl); remotefileConnect (); // tente conectar // criar fluxo de arquivo em = new bufferInputStream (novo sMBFileInputStream (remotefile)); out = novo bytearrayOutputStream ((int) remoteFileLELEngth ()); // Leia o conteúdo do arquivo byte [] buffer = novo byte [4096]; int len = 0; // Leia o comprimento while ((len = inreath (buffer, 0, bufferLength))! = - 1) {outWrite (buffer, 0, len); } outflush (); // Libere o fluxo de saída em buffer Retorno outtobyteArray (); } catch (Exceção e) {string msg = "Erro baixando arquivo remoto:" + egetLocalizedMessage (); SystemOutPrintln (msg); } finalmente {tente {if (out! = null) {outClose (); } if (in! = null) {inclose (); }} catch (Exceção e) {}}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.