Write I/O file to shared network drive using credentials

前端 未结 2 1650
甜味超标
甜味超标 2020-11-29 08:59

I want to drop a .txt file on a shared network drive. The path is a map on a networkdrive which requires credentials (login and password). Can i pass these parameters using

相关标签:
2条回答
  • 2020-11-29 09:19

    This code worked for me:

      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);
          }
    
      }
    
    0 讨论(0)
  • 2020-11-29 09:27

    No. Use java CIFS Client library. you can connect remote windows machine through java. example -

    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();
    

    Thanks

    EDIT: JCIFS only supports the unsecure SMB1 protocol and has been in maintainance mode for some years. Use jcifs-ng for SMB2/SMB3 support which is required from Windows 10.

    0 讨论(0)
提交回复
热议问题