2012-05-15 13 views
7

Chcę upuścić plik .txt na udostępnionym dysku sieciowym. Ścieżka to mapa na dysku sieciowym, która wymaga poświadczeń (login i hasło). Czy mogę przekazać te parametry za pomocą FileOutputStream?Zapisywanie pliku we/wy na udostępnionym dysku sieciowym przy użyciu poświadczeń

 FileOutputStream fos; 
     DataOutputStream dos; 

     try { 
      File file= new File(path + "/" + fileName + ".txt"); 
      fos = new FileOutputStream(file); 
      dos=new DataOutputStream(fos); 
      dos.writeChars(stringContent); 
      dos.close(); 
      fos.close(); 
     } 
     catch(IOException eio){ 
     } 

Dziękuję

Odpowiedz

12

nr Use Java CIFS Client library. możesz podłączyć zdalną maszynę Windows przez Javę. Przykład -

String user = "user:password"; 
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(user); 
String path = "smb://my_machine_name/D/MyDev/test.txt"; 
SmbFile sFile = new SmbFile(path, auth); 
SmbFileOutputStream sfos = new SmbFileOutputStream(sFile); 
sfos.write("Test".getBytes()); 
sfos.close(); 

Dzięki

+1

nie mają żadnego doświadczenia z tym: teraz, że mogę używać niestandardowej biblioteki, muszę umieścić go w plik .jar czy coś takiego? Jak inaczej plik jar może pracować z tymi klasami? – Hazaart

+0

Pobierz plik jcifs-1.1.11.jar jar z [http://jcifs.samba.org/src/](http://jcifs.samba.org/src/) i dodaj ten plik jar do ścieżki budowania. –

+2

jeśli masz domenę, musisz użyć domeny, użytkownik: hasło –

0

Ten kod pracował dla mnie:

public void downloadFromNetworkDrive3() throws MalformedURLException, SmbException, IOException { 
     String user = "domain;username:password";//domain name which you connect 
     NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(user); 
     String path = "smb://198.168.20.27/D$/MICROS/opera/export/OPERA/dinaamum/audit/Thumbs.db"; 

     SmbFile sFile = new SmbFile(path, auth); 
     SmbFileOutputStream sfos; 
     SmbFileInputStream sfis; 
     try { 
//  sfos = new SmbFileOutputStream(sFile); 
      sfis = new SmbFileInputStream(sFile); 

//  sfos.write("hihowareyou".getBytes()); 
      File tempFile = null; 
      String filePath = null; 
      filePath = "c://usr/local/cache/leelafiles"; 
      tempFile = new File(filePath); 
      if (tempFile.exists()) { 
      } else { 
       tempFile.mkdirs(); 
      } 
      tempFile = new File(filePath); 
//  File[] allFilesAndDirs = tempFile.listFiles(); 
      FileOutputStream writer = new FileOutputStream(tempFile + File.separator + "Thumbs.db"); 
      byte[] b = new byte[8192]; 
      int n; 
      while ((n = sfis.read(b)) > 0) { 
       System.out.write(b, 0, n); 
       writer.write(b, 0, n); 
      } 
      sfis.close(); 
      writer.close(); 

     } catch (UnknownHostException ex) { 
      Logger.getLogger(ReportSchedulerJob.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 
+1

Proszę nie tylko zrzucać kod, wyjaśniać w kontekście OP. Podano także słoik firm trzecich [biblioteka klienta CIFS] (https://jcifs.samba.org/) –

+0

Przepraszamy! Tak, zapomniałem napisać kontekst, jednak ten kod do odczytu wszelkich plików z dysku sieciowego przy użyciu nazwy użytkownika i hasła i wymaga trzeciej biblioteki CIFS klienta jar –

Powiązane problemy