2009-10-19 4 views
5

Windows에서 실행되는 Java 스크립트에서 많은 양의 이진 파일을 읽어야합니다.제공된 사용자 이름과 암호를 사용하여 Java에서 파일을 읽는 방법

그러나 파일이있는 폴더에는 사용 권한이 제한되어 있습니다. I (즉, Windows 사용자 이름)에는 읽기 권한이 있지만 Java가 실행되는 사용자 (웹 응용 프로그램의 일부)는 그렇지 않습니다. 런타임에 내 자신의 사용자 이름과 Windows 네트워크 비밀번호를 Java에 전달하면 웹 사용자가 아닌 내 자신의 권한을 사용하여 해당 파일을 읽을 수있는 방법이 있습니까?

(이 웹을 통해 일어나고 있지 않으며, 이것은 웹 애플리케이션의 컨텍스트에서 실행 한 번 가져 오기 스크립트입니다.)

답변

4

당신은 네트워크 공유를 만들 수 일 후 jCIFS

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.UnknownHostException; 

import jcifs.smb.SmbException; 
import jcifs.smb.SmbFileInputStream; 

public class Example 
{ 
    public static void main(String[] args) 
    { 
     SmbFileInputStream fis = null; 
     try 
     { 
      fis = new SmbFileInputStream("smb://DOMAIN;USERNAME:[email protected]/SHARE/filename.txt"); 
      // handle as you would a normal input stream... this example prints the contents of the file 
      int length; 
      byte[] buffer = new byte[1024]; 
      while ((length = fis.read(buffer)) != -1) 
      { 
       for (int x = 0; x < length; x++) 
       { 
        System.out.print((char) buffer[x]); 
       } 
      } 
     } 
     catch (MalformedURLException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (UnknownHostException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (SmbException e) 
     { 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      if (fis != null) 
      { 
       try 
       { 
        fis.close(); 
       } 
       catch (Exception ignore) 
       { 
       } 
      } 
     } 
    } 
} 
를 통해 연결해야합니다 생각
0

당신이 사용할 수있는 파일이 네트워크 공유에있는 경우 net 도구.

runtime.exec("net use ...") 

을 사용하여 공유를 열고 닫을 수 있습니다. 나는 그

관련 문제