java从网络设备读取文件
有人能帮我找到一个教程或示例java代码来帮助我吗java从网络设备读取文件,java,file,networking,io,Java,File,Networking,Io,有人能帮我找到一个教程或示例java代码来帮助我吗 从同一网络中的任何计算机读取文件最简单的方法是使用常规文件路径读取 在Windows上: new File("\\\\server\\path\\to\\file.txt") // (double-backslashes required for backslashes in path) 在Unix上: 首先使用Samba(SMB、NFS或任何其他协议)将共享装载到某个位置,如/mnt/network。然后您可以使用: new File("/
从同一网络中的任何计算机读取文件最简单的方法是使用常规文件路径读取 在Windows上:
new File("\\\\server\\path\\to\\file.txt")
// (double-backslashes required for backslashes in path)
在Unix上:
首先使用Samba(SMB、NFS或任何其他协议)将共享装载到某个位置,如/mnt/network。然后您可以使用:
new File("/mnt/network/path/to/file.txt")
一旦拥有文件对象,就可以使用FileInputStream、FileReader或任何其他要读取文件的工具
编辑评论以获得回复。如果您使用的是小程序,则可能需要从web服务器中提取文件。您可以使用内置的java.net.URL类,但如果您需要做的不仅仅是简单的事情,我建议您这样做:
示例(来自Commons HTTP站点):
请尝试以下URL获取教程 我认为最好的方法是使用
java.net.URL
打开InputSteam,因为您可以将其概括为不一定在同一网络上的文件。这不是那么简单!要使用服务器客户端应用程序,您需要一个网络API。
我有一个由DeBukkit和一个扩展版本。如果您想发送文件,我建议使用我的一个(服务器客户端扩展.jar),因为有一个发送文件的选项(FilePacket.java)。
以下是指向LIB的链接:
客户端服务器扩展的服务器代码:
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.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();
}
}
package com.bebukkit.niton.network.test;
导入java.io.File;
导入java.io.IOException;
导入java.nio.file.Files;
导入javax.swing.JFileChooser;
导入com.bebukkit.niton.network.packets.Packet;
导入com.bebukkit.niton.network.packets.buffer.BufferedPacket;
导入com.bebukkit.niton.network.packets.file.FileInfo;
导入com.bebukkit.niton.network.packets.file.FilePacket;
公共类客户端启动程序{
公共静态void main(字符串[]args)引发IOException{
TestClient tc=新的TestClient();
tc.start();
新线程(newrunnable()){
@凌驾
公开募捐{
试一试{
睡眠(3000);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
JFileChooser c=新建JFileChooser(“选择要上载的文件”);
c、 setFileSelectionMode(仅限JFileChooser.FILES_);
c、 showDialog(空,“上载”);
文件f=c.getSelectedFile();
试一试{
发送消息(新文件包(“文件”,f));
发送消息(新数据包(“重播”、“测试”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}).start();
}
}
如果您的文件路径位于不同的pc(即网络设备)中,但连接到相同的LAN,则您可以通过以下两个步骤轻松访问它
步骤1:您需要将网络驱动器(即所需文件夹)映射到物理驱动器,例如:
在Windows中,\\10.221.222.6/some/path/of/images
路径映射到类似于Z:\或Y:\
第二步:
String externalSharedFilePath=“file:Z:/images/”;
@凌驾
public void addResourceHandlers(ResourceHandlerRegistry注册表){
addResourceHandler(“/images/**”).addResourceLocations(externalSharedFilePath);
}
您希望如何访问该文件?HTTP?NFS?桑巴舞?FTP?在这种情况下,我需要对小程序进行签名吗?我应该使用共享文件夹而不装载,比如ip://文件夹,你认为java新文件(“ip://文件夹/文件”)有什么意义吗Linux上有没有不需要装载共享的解决方案?我没有使用mount命令的权限,如果我尝试使用Windows解决方案,它会在本地目录中创建一个名称中带有斜杠的文件。
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();
}
}