2011-10-14 4 views
20

के साथ जावा का उपयोग कर फ़ाइल तक पहुंच। मेरे पास सांबा जेसीआईएफएस के साथ फ़ाइल तक पहुंचने के बारे में कोई सवाल है। तो एक सर्वर है जिसे मैं एक्सेस करना चाहता हूं, चलिए इसे server.unv.edu कहते हैं और कार्यसमूह WKGRP है। इस सर्वर में हिस्सा है: \\ server.unv.edu \ पीसीबी $सांबा जेसीआईएफएस

तरह से मैं सर्वर से उपयोग करने की कोशिश कर रहा हूँ है:

public class SMBAuthenticator extends NtlmAuthenticator{ 

private String username = "username"; 
private String password = "password"; 
private String domain = "smb://server.unv.edu/WKGRP/"; 

public SMBAuthenticator(){ 
    NtlmAuthenticator.setDefault(this); 
} 

और

public class SMBConnection{ 

public String urlString = "smb://server.unv.edu/pcb$/path/file.txt"; 
NtlmPasswordAuthentication auth; 
SmbFile smbFile; 

public SMBConnection() throws MalformedURLException{; 
    //url = new URL(urlString); 
    SMBAuthenticator authenticator = new SMBAuthenticator(); 
    auth = authenticator.getNtlmPasswordAuthentication(); 
    smbFile = new SmbFile(urlString, auth); 
} 

public InputStream getSMBInputStream() throws IOException{ 
    return this.smbFile.getInputStream(); 
} 

public InputStream getInputStream() throws IOException{ 
    InputStream is = this.getSMBInputStream(); 
    return is; 
} 
} 

लेकिन यह does not काम है.और मैं

jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password. 
at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:544) 
at jcifs.smb.SmbTransport.send(SmbTransport.java:661) 
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:390) 
at jcifs.smb.SmbSession.send(SmbSession.java:218) 
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:176) 
at jcifs.smb.SmbFile.doConnect(SmbFile.java:929) 
at jcifs.smb.SmbFile.connect(SmbFile.java:954) 
at jcifs.smb.SmbFile.connect0(SmbFile.java:880) 
at jcifs.smb.SmbFile.open0(SmbFile.java:972) 
at jcifs.smb.SmbFile.open(SmbFile.java:1006) 
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:73) 
at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65) 
at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2844) 
at edu.umd.lib.sambaConnection.SMBConnection.getSMBInputStream(SMBConnection.java:33) 
at edu.umd.lib.sambaConnection.SMBConnection.getInputStream(SMBConnection.java:37) 
at edu.umd.lib.sambaConnection.SambaConnectionTest.test(SambaConnectionTest.java:21) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

की एक त्रुटि किसी को भी मुझे एक सुझाव या एक correctnes दे सकते हैं मिल गया मेरे कोड का उपयोग करने के लिए, मुझे फ़ाइल तक पहुंचने में मदद करने के लिए?

आपको बहुत बहुत धन्यवाद।

+0

मैं पहले स्थानीय फ़ाइल (या आपके द्वारा अभी बनाया गया एक साझा) के खिलाफ कोड का परीक्षण करता हूं और फिर दूरस्थ सर्वर के साथ प्रयास करता हूं। यह, ताकि आप सुनिश्चित कर सकें कि आपका कोड ठीक है, और कुछ और नहीं है (अनुमतियों की तरह)। – jmend

उत्तर

39

आप इसे जितना कठिन बनाना चाहते हैं। कृपया नीचे दिए गए चरणों का पालन करें और सुनिश्चित करें कि आपके द्वारा बनाए गए साझा फ़ोल्डर में आपके द्वारा उपयोग किए जा रहे इस उपयोगकर्ता के लिए पहुंच पहुंच है।

  1. डाउनलोड जार फ़ाइल http://jcifs.samba.org/ (वहाँ केवल एक जार फ़ाइल है)
  2. कॉपी और उपयोगकर्ता नाम, पासवर्ड के लिए अपनी जानकारी नीचे दिए गए कोड पेस्ट और साझा फ़ोल्डर और कहा कि आप सभी की जरूरत

है मैं इसे लिनक्स पर चला रहा था और एक विंडोज बॉक्स में लिखना चाहता था ताकि आप एक साझा फ़ोल्डर बनाना चाहते हैं और साझा फ़ोल्डर नाम को नीचे परिवर्तनीय में डाल दें यदि आप नहीं जानते कि विंडोज़ पर साझा फ़ोल्डर कैसे बनाएं ... उपयोग करें हमेशा के रूप में Google

String user = "your_user_name"; 
    String pass ="your_pass_word"; 

    String sharedFolder="shared"; 
    String path="smb://ip_address/"+sharedFolder+"/test.txt"; 
    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass); 
    SmbFile smbFile = new SmbFile(path,auth); 
    SmbFileOutputStream smbfos = new SmbFileOutputStream(smbFile); 
    smbfos.write("testing....and writing to a file".getBytes()); 
    System.out.println("completed ...nice !"); 
+0

क्या यह प्रमाणित करने का कोई तरीका है कि प्रमाणीकरण सफल था या नहीं? मैंने 'auth.equals (true) 'के साथ प्रयास किया, लेकिन यह कुछ भी वापस नहीं प्रतीत होता है हालांकि प्रमाणीकरण सफलता प्राप्त हुई थी। –

+0

मेरे पास यूएसबी कनेक्शन के साथ राउटर है। मैंने इसे एक हार्ड ड्राइव से जोड़ा। मैक ओएस सीधे इसका उपयोग कर सकता है। मैं इसे जावा के साथ एक्सेस करना चाहता हूं, लेकिन मुझे उपयोगकर्ता नाम और पासवर्ड नहीं पता है। मैं इसे कैसे ढूंढ सकता हूं? उदाहरण के लिए फ़ोल्डर यहां है: smb: // air5750nas/KORAY/Diziler लेकिन उपयोगकर्ता नाम पासवर्ड ओएसएक्स क्या उपयोग कर रहा है? –

संबंधित मुद्दे