要将文件从服务器复制到客户端

问题描述:

我想将文件从一台服务器复制到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的东西不起作用。有没有其他方法?这是正确的吗?感谢

+0

如果该文件是在本地驱动器上,这是不是一个真正的服务器/客户关系。为什么不复制文件? – StriplingWarrior 2011-05-19 15:43:00

+0

,因为从长远来看,我想在某处上传服务器。或者,我可以让服务器的地方在那里的代码将被编译并运行远程机器(如Unix服务器)上,然后我会得到从远程目录中的文件拷贝我的系统(无关的网址上只是目录) – Martinos 2011-05-19 15:45:49

+0

如果它是一个服务器,你可以使用环回接口并像处理其他服务器一样处理它。如果你想在其他地方使用它,你必须学会​​设置服务器.. – Voo 2011-05-19 16:13:38

如果你希望从本地文件系统访问您的文件(不管是可以通过网络驱动器或本地磁盘),你需要把这个,就好像它是一个直接的文件复制。

如果您希望像访问HTTP服务器一样访问您的文件,则需要将其视为HTTP下载(这就是您尝试使用URL)。

如果要使用本地系统上的文件测试HTTP下载功能,只需在开发机器上设置一个简单的HTTP服务器,并在本地系统上有一个目录,并为HTTP下载代码指定一个URL指向到本地服务器(在http://localhost上,或使用您的IP地址)。

遗憾的是,HTTP是从文件系统中一个非常不同的动物,我不认为有任何的方式来使用相同的代码来处理这两种情形。如果您希望您的程序最终支持这两种协议,则应该构建方法/类来处理这两种情况,然后让程序检测并针对给定路径使用适当的协议。您需要为您希望支持的任何其他协议(FTP,SFTP等)执行相同的操作。