Java Windows 공유 폴더 읽기 및 쓰기 방법 인스턴스

프로젝트는 종종 공유 폴더에 접근해야 한다. 예를 들어 공유 폴더는 사진, 파일 등을 저장한다.그러면 어떻게 Java를 사용하여 Windows 공유 폴더를 읽고 쓰나요?
Java는 JCIFS 프레임워크를 사용하여 Windows 공유 폴더를 읽고 쓸 수 있습니다. 이 프레임워크는 로컬 폴더에 접근하여 원격 폴더에 접근하는 것과 같습니다.
JCIFS의 웹 주소:http://jcifs.samba.org/
JCIFS는 순수한 Java를 사용하여 개발한 소스 프레임워크로 smb 프로토콜을 통해 원격 폴더에 접근합니다.이 프레임워크는 Windows 공유 폴더와 Linux 공유 폴더를 동시에 지원하지만, Linux 공유 폴더는 Samba 서비스 소프트웨어를 설치해야 한다(홈페이지:http://www.samba.org/).
SMB(Server Messages Block, 정보 서비스 블록)는 LAN에서 파일과 프린터를 공유하는 통신 프로토콜로 LAN 내의 서로 다른 컴퓨터 간에 파일과 프린터 등 자원을 공유하는 서비스이다.SMB 프로토콜은 클라이언트/서버형 프로토콜로 클라이언트는 이 프로토콜을 통해 서버의 공유 파일 시스템, 프린터 및 기타 자원에 접근할 수 있다."NetBIOS over TCP/IP"설정을 통해 삼바는 국역 네트워크 호스트와 자원을 공유할 수 있을 뿐만 아니라 전 세계 컴퓨터와 자원을 공유할 수 있다.
본고는 주로 Java를 사용하여 Windows 공유 폴더에 액세스하는 방법을 학습합니다.
먼저 Windows 시스템을 찾아 임의의 위치에 폴더:sharedFolder를 만들고 공유로 설정합니다. 공유 사용자 이름:share, 비밀번호:admin을 설정합니다.
(Windows 7에서 공유 폴더 설정 방법: Windows 7에서 공유 폴더 설정 방법:https://www.jb51.net/os/windows/78034.html)
Windows든 Linux든 공유 폴더든 자바 smb를 사용하여 공유 폴더에 접근하는 코드는 똑같지만 Windows와 Linux가 공유 폴더를 설정하는 방식은 다르다.
테스트 코드는 다음과 같습니다.

InputStream in = null; 
OutputStream out = null; 
try { 
  //  
  File 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(); //  
 
  in = new BufferedInputStream(new FileInputStream(localFile)); 
  out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile)); 
 
  byte[] buffer = new byte[4096]; 
  int len = 0; //  
  while ((len = inread(buffer, 0, bufferlength)) != -1) { 
    outwrite(buffer, 0, len); 
  } 
  outflush(); //  
} 
catch (Exception e) { 
  String msg = " :" + egetLocalizedMessage(); 
  Systemoutprintln(msg); 
} 
finally { 
  try { 
    if(out != null) { 
      outclose(); 
    } 
    if(in != null) { 
      inclose(); 
    } 
  } 
  catch (Exception e) {} 
} 
상기 코드에서는 JCIFS 프레임워크에서 제공하는 SmbFile 클래스를 사용했는데 이 클래스는 자바의 File 클래스와 비교적 비슷하다. 이 클래스의 대상을 사용하면 원격 파일의 읽기와 쓰기를 처리할 수 있다.File 객체를 사용하여 로컬 파일을 읽고 SmbFile 객체를 사용하여 원격 파일에 씁니다.SmbFile의connect() 방법은 원격 폴더에 연결을 시도할 수 있습니다. 계정이나 비밀번호가 잘못되면 연결 이상이 발생합니다.
원격 파일을 다운로드할 때 SmbFile 객체를 사용하여 원격 파일을 읽으면 됩니다. 코드는 다음과 같습니다.

InputStream in = null ; 
ByteArrayOutputStream out = null ; 
try { 
  //  
  String remotePhotoUrl = "smb://share:admin@11/sharedFolder/testjpg"; 
  SmbFile remoteFile = new SmbFile(remotePhotoUrl); 
  remoteFileconnect(); //  
  //  
  in = new BufferedInputStream(new SmbFileInputStream(remoteFile)); 
  out = new ByteArrayOutputStream((int)remoteFilelength()); 
  //  
  byte[] buffer = new byte[4096]; 
  int len = 0; //  
  while ((len = inread(buffer, 0, bufferlength)) != - 1) { 
    outwrite(buffer, 0, len); 
  } 
 
  outflush(); //  
  return outtoByteArray(); 
} 
catch (Exception e) { 
  String msg = " :" + egetLocalizedMessage(); 
  Systemoutprintln(msg); 
} 
finally { 
  try { 
    if(out != null) { 
      outclose(); 
    } 
    if(in != null) { 
      inclose(); 
    } 
  } 
  catch (Exception e) {} 
} 
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기