我做了一个ftp下载··、
想在下载前,也就是获得流之前获得ftp服务器上指定文件的大小··
不知道该怎么实现·····
请指教··谢谢····
code::public static boolean downLoadFtp(String ftpServerIp,String ftpUser,String ftpPassWord,String url,String filePath,String fileName){
try
{
FtpClient fc=new FtpClient(ftpServerIp);
fc.login(ftpUser,ftpPassWord);
fc.binary();
int ch;
int filesize=0;
String fileStr = filePath + fileName;
System.out.println(fileStr);
File filename = new File(fileStr);
if(filename.exists()){
return false;
}
if (!filename.exists()) {
if (filename.createNewFile()) {
System.out.println("File is created successfully!");
}
}
RandomAccessFile getFile = new RandomAccessFile(fileStr,"rw");
getFile.seek(0);
//url="/FTPTest1.txt";
TelnetInputStream fget=fc.get(fileName); DataInputStream puts = new DataInputStream(fget);
while ((ch = puts.read()) >= 0) {
filesize =filesize+ch;
getFile.write(ch);
} fget.close();
getFile.close();
fc.closeServer();
}
catch (IOException ex)
{
System.out.println("C:: download 89 FTP ERROR!!");
ex.printStackTrace();
}
return true;
}
想在下载前,也就是获得流之前获得ftp服务器上指定文件的大小··
不知道该怎么实现·····
请指教··谢谢····
code::public static boolean downLoadFtp(String ftpServerIp,String ftpUser,String ftpPassWord,String url,String filePath,String fileName){
try
{
FtpClient fc=new FtpClient(ftpServerIp);
fc.login(ftpUser,ftpPassWord);
fc.binary();
int ch;
int filesize=0;
String fileStr = filePath + fileName;
System.out.println(fileStr);
File filename = new File(fileStr);
if(filename.exists()){
return false;
}
if (!filename.exists()) {
if (filename.createNewFile()) {
System.out.println("File is created successfully!");
}
}
RandomAccessFile getFile = new RandomAccessFile(fileStr,"rw");
getFile.seek(0);
//url="/FTPTest1.txt";
TelnetInputStream fget=fc.get(fileName); DataInputStream puts = new DataInputStream(fget);
while ((ch = puts.read()) >= 0) {
filesize =filesize+ch;
getFile.write(ch);
} fget.close();
getFile.close();
fc.closeServer();
}
catch (IOException ex)
{
System.out.println("C:: download 89 FTP ERROR!!");
ex.printStackTrace();
}
return true;
}
注意这里是使用:sun.net.ftp的//获取文件大小
int fileSize = -1;
ftpclient.sendServer("SIZE "+SourceFileName+"\r\n");
int res = ftpclient.readServerResponse();//z注意:这里的组合使用是必须得 sendServer 后到 readServerResponse
if(res==213){
String msg= ftpclient.getResponseString();
try{
fileSize = Integer.parseInt(msg.substring(3).trim());
}
catch(Exception ex){;}
}
SourceFileName 就是在FTP服务器上的文件,例如:/top/001.txt 大小,1024b
而调用ftpclient.getResponseString() 会返回以下信息:213 1024