java怎么打开FTP服务器上的文件
http的话就用
httpclient
。open后,可以返回一个
InputStream
。这个就是你要读到
文件流
。
原理的话,参考你用浏览器打开这个链接显示的内容。
这个返回的是一个HTML网页,需要你解析出里面的文字(一般来说取body中间的内容就行)
其实对于这种文件一般用FTP来下载的。楼上写的那个不对,哈哈。
需要的话自己最好去查一下,怎么用,我有代码,不过告诉你的话也不太好?
URL
url
=
new
URL("http://你的地址");
URLConnection
connection
=
urlopenConnection();
InputStream
is
=
connectiongetInputStream();
BufferedReader
br
=
new
BufferedReader(new
InputStreamReader(is,"gb2312"));
下面就是解析这个字符串来,自己来吧
这个是可以向服务器端发送文字的程序,就是在客户端发送一句hello在服务器也可以接受到hello,这个程序可以修改一下就可以了。具体修改方法是增加一个定时器,然后把字符流改成字节流,现在有点忙,你先研究啊,近两天帮你写写看。
服务器端:
import javanet;
import javaio;
public class DateServer {
public static void main(String[] args) {
ServerSocket server=null;
try{
server=new ServerSocket(6666);
Systemoutprintln(
"Server start on port 6666");
while(true){
Socket socket=serveraccept();
new SocketHandler(socket)start();
/
PrintWriter out=new PrintWriter(
new OutputStreamWriter(
socketgetOutputStream()
)
);
outprintln(new javautilDate()toLocaleString());
outclose();
/
}
}catch(Exception e){
eprintStackTrace();
}finally{
if(server!=null) {
try{
serverclose();
}catch(Exception ex){}
}
}
}
}
class SocketHandler extends Thread {
private Socket socket;
public SocketHandler(Socket socket) {
thissocket=socket;
}
public void run() {
try{
PrintWriter out=new PrintWriter(
new OutputStreamWriter(
socketgetOutputStream()
)
);
outprintln(
new javautilDate()
toLocaleString());
outclose();
}catch(Exception e){
eprintStackTrace();
}
}
}
客户端:
package combriup;
import javaio;
import javanet;
public class FtpClient {
public static void main(String[] args) {
if(argslength==0) {
Systemoutprintln("Usage:java FtpClient file_path");
Systemexit(0);
}
File file=new File(args[0]);
if(!fileexists()||!filecanRead()) {
Systemoutprintln(args[0]+" doesn't exist or can not read");
Systemexit(0);
}
Socket socket=null;
try{
socket=new Socket(args[1],IntegerparseInt(args[2]));
BufferedInputStream in=new BufferedInputStream(
new FileInputStream(file)
);
BufferedOutputStream out=new BufferedOutputStream(
socketgetOutputStream()
);
byte[] buffer=new byte[10248];
int i=-1;
while((i=inread(buffer))!=-1) {
outwrite(buffer,0,i);
}
Systemoutprintln(socketgetInetAddress()getHostAddress()+" send file over");
inclose();
outclose();
}catch(Exception e){
eprintStackTrace();
}finally{
if(socket!=null) {
try{
socketclose();
}catch(Exception ex){}
}
}
}
}
1使用的FileZillaServer开源,安装过后建立的本地FTP服务器。2使用的apache上FTP工具包,引用到工程目录中。3IDE,Eclipse,JDK6上传和目录的实现原理:对每一个层级的目录进行判断,是为目录类型、还是文件类型。如果为目录类型,采用递归调用方法,检查到最底层的目录为止结束。如果为文件类型,则调用上传或者方法对文件进行上传或者操作。贴出代码:(其中有些没有代码,可以看看,还是很有用处的)!
0条评论