2009-10-19 7 views
5

Potrzebuję przeczytać kilka plików binarnych ze skryptu Java uruchomionego w systemie Windows.jak używać dostarczonej nazwy użytkownika i hasła do odczytu pliku w Javie

Jednak folder, w którym znajdują się pliki, ma ograniczone uprawnienia. Ja (tj. Moja nazwa użytkownika Windows) mam uprawnienia do ich odczytu, ale użytkownik, który uruchamia Javę jako (jest to część aplikacji internetowej), nie ma. Czy w środowisku wykonawczym przekazuję swoją własną nazwę użytkownika i hasło sieciowe Windows do środowiska Java, czy istnieje sposób, w jaki mogę odczytać te pliki przy użyciu własnych uprawnień, a nie użytkowników internetowych?

(Zauważ, że nie dzieje się w internecie, jest to skrypt import jednorazowa uruchomiony w kontekście aplikacji internetowych).

Odpowiedz

4

Można by utworzyć udział sieciowy, a następnie podłączyć za pomocą 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

Jeśli pliki znajdują się w sieci-akcję można użyć net narzędzie. Z jednostką

, aby otworzyć i zamknąć udział. Myślę, że powinno działać

Powiązane problemy