qualcuno può aiutarmi a trovare un codice java tutorial o campione perjava leggere il file dal dispositivo di rete
lettura del file da una qualsiasi macchina che è lo stesso di rete
qualcuno può aiutarmi a trovare un codice java tutorial o campione perjava leggere il file dal dispositivo di rete
lettura del file da una qualsiasi macchina che è lo stesso di rete
Il modo più semplice per farlo sarebbe quello di leggere usando normali percorsi di file.
Su Windows:
new File("\\\\server\\path\\to\\file.txt")
// (double-backslashes required for backslashes in path)
In Unix:
Prima montare la condivisione tramite Samba (SMB, NFS o qualunque altro protocollo) in una certa posizione, come/mnt/network. Quindi è possibile utilizzare:
new File("/mnt/network/path/to/file.txt")
Una volta ottenuto l'oggetto File è possibile utilizzare FileInputStream, FileReader o qualsiasi altra cosa che si desidera leggere il file in
Modifica per la risposta commenti.. Se si utilizza un'applet, è probabile che si desideri estrarre il file da un server Web. È possibile utilizzare il costruito in classe java.net.URL ma mi sento di raccomandare questo se si deve fare di più che solo roba semplice: http://hc.apache.org/httpclient-3.x/index.html
Esempio (dal Commons HTTP del sito):
// 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();
}
}
}
in questo caso devo firmare l'applet? – soField
e dovrei usare la cartella condivisa senza montare come ip: // cartella, pensi che java new File ("ip // folder/file") abbia significato – soField
Esiste una soluzione su Linux che non richiede il montaggio della condivisione? Non ho il permesso di usare il comando mount, e se provo a usare la soluzione Windows, crea un file nella directory locale con le barre nel nome. – datguy
Try il seguente URL per un tutorial http://www.roseindia.net/java/beginners/construct_file_name_path.shtml
Penso che il modo migliore sia utilizzare java.net.URL
per aprire un InputSteam, perché è possibile generalizzarlo su file, che non sono necessariamente sulla stessa rete.
Non è così semplice! Per utilizzare le applicazioni client del server è necessaria un'API di rete.
Ho 1 di DeBukkit e una versione estesa. Se si desidera inviare file, suggerirò il mio (Server Client .jar esteso) perché esiste un'opzione per l'invio di file (FilePacket.java).
Questo sono i link alle librerie: All Libs
Codice per Server per Client Server estesa:
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
}
}
Codice for Client:
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();
}
}
Avete bisogno di un seperated server + client Starter:
package com.bebukkit.niton.network.test;
public class ServerStarter {
public static void main(String[] args) {
new TestServer();
}
}
Client:
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();
}
}
Come si desidera accedere al file? HTTP? NFS? Samba? FTP? – Asaph