2009-11-05 9 views
9

किसी की मदद कर सकते हैं मुझे एक किसी भी मशीन सेजावा नेटवर्क डिवाइस से फ़ाइल को पढ़ने

फ़ाइल पढ़ने में जो एक ही नेटवर्क

+1

कैसे आप फ़ाइल का उपयोग करना चाहते हैं? एचटीटीपी? एनएफएस? सांबा? एफ़टीपी? – Asaph

उत्तर

21

सबसे आसान तरीका यह करने के लिए पढ़ने के लिए होगा के लिए एक ट्यूटोरियल या नमूना जावा कोड को खोजने के लिए यह नियमित फ़ाइल पथ का उपयोग कर रहा है।

विंडोज पर:

new File("\\\\server\\path\\to\\file.txt") 
// (double-backslashes required for backslashes in path) 

यूनिक्स पर:

सबसे पहले माउंट सांबा (एसएमबी, एनएफएस या जो कुछ भी अन्य प्रोटोकॉल)/MNT/नेटवर्क जैसे कुछ स्थान के लिए प्रयोग कर साझा करें। तो फिर आप का उपयोग कर सकते हैं:

new File("/mnt/network/path/to/file.txt") 

एक बार जब आप फ़ाइल वस्तु आप FileInputStream, FileReader या जो कुछ भी उपयोग कर सकते हैं आप में फ़ाइल को पढ़ने के लिए चाहते हैं

टिप्पणियां प्रतिक्रिया के लिए संपादित करें।। यदि आप ऐप्पल का उपयोग कर रहे हैं, तो आप शायद फ़ाइल को वेब सर्वर से खींचना चाहते हैं। आप java.net.URL वर्ग में बनाया का उपयोग कर सकते हैं, लेकिन आप केवल साधारण सामान की तुलना में अधिक क्या करना है अगर मैं इस सिफारिश करेंगे: http://hc.apache.org/httpclient-3.x/index.html

उदाहरण (कॉमन्स HTTP साइट से):

// Create an instance of HttpClient. 
    HttpClient client = new HttpClient(); 

    // Create a method instance. 
    GetMethod method = new GetMethod(url); 

    try { 
     // Execute the method. 
     int statusCode = client.executeMethod(method); 

     if (statusCode != HttpStatus.SC_OK) { 
     System.err.println("Method failed: " + method.getStatusLine()); 
     } 

     // Read the response body. 
     byte[] responseBody = method.getResponseBody(); 

     // Deal with the response. 
     // Use caution: ensure correct character encoding and is not binary data 
     System.out.println(new String(responseBody)); 

    } catch (HttpException e) { 
     System.err.println("Fatal protocol violation: " + e.getMessage()); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     System.err.println("Fatal transport error: " + e.getMessage()); 
     e.printStackTrace(); 
    } finally { 
     // Release the connection. 
     method.releaseConnection(); 
    } 
    } 
} 
+0

इस मामले में मुझे एप्लेट पर हस्ताक्षर करने की आवश्यकता है? – soField

+0

और मुझे आईपी: // फ़ोल्डर की तरह बढ़ते हुए साझा फ़ोल्डर का उपयोग करना चाहिए, क्या आपको लगता है कि जावा नई फ़ाइल ("आईपी // फ़ोल्डर/फ़ाइल") अर्थपूर्ण – soField

+0

क्या लिनक्स पर कोई समाधान है जिसे शेयर को बढ़ाने की आवश्यकता नहीं है? मुझे माउंट कमांड का उपयोग करने की अनुमति नहीं है, और यदि मैं विंडोज समाधान का उपयोग करने का प्रयास करता हूं, तो यह नाम में स्लेश के साथ स्थानीय निर्देशिका में एक फ़ाइल बनाता है। – datguy

-3

कोशिश एक ट्यूटोरियल http://www.roseindia.net/java/beginners/construct_file_name_path.shtml

के लिए निम्न URL मुझे लगता है कि सबसे अच्छा तरीका है, java.net.URL उपयोग करने के लिए एक InputSteam को खोलने के लिए, क्योंकि आप इसे फ़ाइलें, कि एक ही नेटवर्क पर जरूरी नहीं हैं करने के लिए सामान्य कर सकते हैं।

0


यह इतना आसान नहीं है! सर्वर क्लाइंट अनुप्रयोगों का उपयोग करने के लिए आपको एक नेटवर्क एपीआई चाहिए।
मेरे पास डेबुक्किट और एक विस्तारित संस्करण है। अगर आप फाइलें भेजना चाहते हैं तो मैं अपना एक (सर्वर क्लाइंट एक्सटेंडेड .jar) सुझाऊंगा क्योंकि फाइलें (FilePacket.java) भेजने का विकल्प है।
इस libs के लिए लिंक कर रहे हैं: All Libs


ग्राहक सर्वर के लिए सर्वर विस्तारित के लिए कोड:

क्लाइंट के लिए
public class TestServer extends Server { 

    public TestServer() { 
     super(29898, true, true,true); 
     registerMethod("bt", new FileReciver() { 

      @Override 
      public void onCompleteRecive(FileInfo data) { 
       System.out.println("Completely recived : "+data); 
       Path p = Paths.get(data.getName()); 
       try { 
        Files.createFile(p); 
        Files.write(p, data.getContent()); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
      /** 
      * @see com.bebukkit.niton.network.packets.buffer.BufferedPacketReciver#run(com.bebukkit.niton.network.packets.Packet, java.net.Socket) 
      */ 
      @Override 
      public void run(Packet<? extends Serializable> msg, Socket socket) { 
       super.run(msg, socket); 
       sendMessage(new Packet<Boolean>("", null), socket); 
      } 
     }); 
    } 

    @Override 
    public void preStart() 
    { 
     registerMethod("msg", new ReciveMethod() { 

      @Override 
      public void run(Packet<? extends Serializable> msg, Socket socket) { 
       broadcastMessage(msg); 
      } 
     }); 
    } 

    @Override 
    public void onWrongDataPacketException(ClassNotFoundException e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onReceivePacketError(IOException e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPacketReckognized(ServerSocket socket) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPacketSendException(Exception e, Packet<? extends Serializable> message, Socket socket2) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onSendPacketToNotConnectedClient(Packet<? extends Serializable> message, Socket socket2) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onBrodcast(Packet<? extends Serializable> pack) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onServerStartError(IOException e) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onServerStop() { 
     // TODO Auto-generated method stub 

    } 

} 

कोड:

package com.bebukkit.niton.network.test; 

import java.io.IOException; 
import java.io.Serializable; 
import java.net.Socket; 
import java.util.Scanner; 

import com.bebukkit.niton.network.Client; 
import com.bebukkit.niton.network.packets.Packet; 
import com.bebukkit.niton.network.packets.ReciveMethod; 

public class TestClient extends Client { 

    public TestClient() { 
     super("localhost", 29898, 5000, false,true); 
     registerMethod("msg", new ReciveMethod() { 

      @Override 
      public void run(Packet<? extends Serializable> msg, Socket socket) { 
       System.out.println(msg.getData()); 
      } 
     }); 
     registerMethod("replay", new ReciveMethod() { 

      @Override 
      public void run(Packet<? extends Serializable> msg, Socket socket) { 
       System.out.println("REREplay"); 
      } 
     }); 
    } 

    @Override 
    public void onSocketClosingFail() { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onLoginPacketSendingFailed(IOException ex) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onConnectionError(IOException ex) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onMessageReciveError(Exception ex) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPacketSendError(Exception ex, Packet<? extends Serializable> pack) { 
     // TODO Auto-generated method stub 

    } 
    @Override 
    public void start() { 
     super.start(); 
    } 

} 


आप एक अलग सर्वर + क्लाइंट की जरूरत है स्टार्टर:

package com.bebukkit.niton.network.test; 

public class ServerStarter { 

    public static void main(String[] args) { 
     new TestServer(); 
    } 

} 

ग्राहक:

package com.bebukkit.niton.network.test; 

import java.io.File; 
import java.io.IOException; 
import java.nio.file.Files; 

import javax.swing.JFileChooser; 

import com.bebukkit.niton.network.packets.Packet; 
import com.bebukkit.niton.network.packets.buffer.BufferedPacket; 
import com.bebukkit.niton.network.packets.file.FileInfo; 
import com.bebukkit.niton.network.packets.file.FilePacket; 

public class ClientStarter { 

    public static void main(String[] args) throws IOException { 
     TestClient tc = new TestClient(); 
     tc.start(); 

     new Thread(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        Thread.sleep(3000); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       JFileChooser c = new JFileChooser("Choose a file to upload"); 
       c.setFileSelectionMode(JFileChooser.FILES_ONLY); 
       c.showDialog(null,"Upload"); 
       File f = c.getSelectedFile(); 
       try { 
        tc.sendMessage(new FilePacket("file", f)); 
        tc.sendMessage(new Packet<String>("replay","test")); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }).start(); 

    } 

}