要将文件从服务器复制到客户端
问题描述:
我想将文件从一台服务器复制到java.this客户是我的代码到现在要将文件从服务器复制到客户端
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
public class Copy {
private ListDirectory dir = new ListDirectory();
public Copy() {
}
public String getCopyPath(String file) throws Exception {
String path = dir.getCurrentPath();
path += "\\" + file;
return path;
}
public void copyFile(String file) {
try {
File inputFile = new File(dir.getCurrentPath());
URL copyurl;
InputStream outputFile;
copyurl = new URL(getCopyPath(file));
outputFile = copyurl.openStream();
FileOutputStream out = new FileOutputStream(inputFile);
int c;
while ((c = outputFile.read()) != -1)
out.write(c);
outputFile.close();
out.close();
} catch (Exception e) {
System.out.println("Failed to Copy File from server");
e.printStackTrace();
}
}
public static void main(String args[]) {
String a = "put martin";
String b = a.substring(0, 3);
String c = a.substring(4);
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
问题是,该服务器是不在线上传,但它在我的本地驱动器,并且URL的东西不起作用。有没有其他方法?这是正确的吗?感谢
答
如果你希望从本地文件系统访问您的文件(不管是可以通过网络驱动器或本地磁盘),你需要把这个,就好像它是一个直接的文件复制。
如果您希望像访问HTTP服务器一样访问您的文件,则需要将其视为HTTP下载(这就是您尝试使用URL)。
如果要使用本地系统上的文件测试HTTP下载功能,只需在开发机器上设置一个简单的HTTP服务器,并在本地系统上有一个目录,并为HTTP下载代码指定一个URL指向到本地服务器(在http://localhost上,或使用您的IP地址)。
遗憾的是,HTTP是从文件系统中一个非常不同的动物,我不认为有任何的方式来使用相同的代码来处理这两种情形。如果您希望您的程序最终支持这两种协议,则应该构建方法/类来处理这两种情况,然后让程序检测并针对给定路径使用适当的协议。您需要为您希望支持的任何其他协议(FTP,SFTP等)执行相同的操作。
如果该文件是在本地驱动器上,这是不是一个真正的服务器/客户关系。为什么不复制文件? – StriplingWarrior 2011-05-19 15:43:00
,因为从长远来看,我想在某处上传服务器。或者,我可以让服务器的地方在那里的代码将被编译并运行远程机器(如Unix服务器)上,然后我会得到从远程目录中的文件拷贝我的系统(无关的网址上只是目录) – Martinos 2011-05-19 15:45:49
如果它是一个服务器,你可以使用环回接口并像处理其他服务器一样处理它。如果你想在其他地方使用它,你必须学会设置服务器.. – Voo 2011-05-19 16:13:38