您的位置:首页 > 编程语言 > PHP开发

sun.net.ftp.FtpClient 上传文件和文件夹应用(改变相关文件中的内容)

2012-05-04 18:40 453 查看
package com.teenysoft.usermanager;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import sun.net.TelnetOutputStream;

import sun.net.ftp.FtpClient;

/**

* Class FtpFileUpload.java

* Function 使用ftp上传文件、目录

*/

public class FtpFileUpload {

private FtpClient ftpClient=null;

public FtpFileUpload(){

ftpClient=new FtpClient();

ftpClient.setConnectTimeout(5000);

}

public void connect(String host,int port,String user,String password)throws IOException{

ftpClient.openServer(host,port);

ftpClient.login(user,password);

ftpClient.binary();

}

public void cd(String relativePath)throws IOException{

ftpClient.cd(relativePath);

}

public void uploadDirectory(String directory,boolean bl,String nameFtp,String n,String serverIp,String username,String password)throws IOException{

File file=new File(directory);

String name=null;//待上传文件名

if(file.isDirectory()){//如果为目录,则按目录传

File[] files=file.listFiles();

//在ftp服务器上创建对应目录

ftpClient.ascii();

String dir = file.getName();

if(bl){

dir = nameFtp;

bl = false;

}

ftpClient.sendServer("XMKD " + dir + "\r\n");

ftpClient.readServerResponse();

ftpClient.cd(dir);

ftpClient.binary();

//循环传递目录下的所有文件与目录

int i=0;

for(i=0;i<files.length;i++){

File tmpFile=files[i];

if(tmpFile.isDirectory()){

ftpClient.cd("..");

ftpClient.cd(dir);

uploadDirectory(tmpFile.getAbsolutePath(),bl,nameFtp, n, serverIp, username, password);

}else{

ftpClient.cd("..");

ftpClient.cd(dir);

name=tmpFile.getName();

upload(directory+"/"+name, n, serverIp, username, password);

}

}

ftpClient.cd("..");

}

else //如果为文件,则按文件上传

upload(directory,file.getName(), n, serverIp, username, password);

}

public void upload(String srcFile,String n,String serverIp,String username,String password)throws IOException{

File file=new File(srcFile);

FileInputStream fin=new FileInputStream(srcFile);

TelnetOutputStream tos = ftpClient.put(file.getName());

if(file.getName().equals("spring.xml")){

InputStreamReader ie=new InputStreamReader(fin, "utf-8");

BufferedReader reader = new BufferedReader(ie);

String line = null;

while ((line = reader.readLine()) != null) {

if(line.indexOf("serverIp")!=-1){

line=line.replaceAll("serverIp", serverIp);

line=line.replaceAll("dataName", n);

}

if(line.indexOf("datausername")!=-1){

line=line.replaceAll("datausername", username);

}

if(line.indexOf("datapassword")!=-1){

line=line.replaceAll("datapassword", password);

}

tos.write(line.getBytes("utf-8"));

System.out.println("----------------1--------");

}

System.out.println("----------------2--------");

reader.close();

ie.close();

}else{

int readLength = 0;

byte[] buf = new byte[1024];

while ( (readLength = fin.read(buf)) != -1) {

tos.write(buf, 0, readLength);

}

}

fin.close();

tos.close();

}

public void upload(String srcFile,String destFile,String n,String serverIp,String username,String password)throws IOException{

upload(srcFile, n, serverIp, username, password);

File file=new File(srcFile);

ftpClient.rename(file.getName(), destFile);

}

public void close(){

try {

ftpClient.closeServer();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

FtpFileUpload ftpUpload=new FtpFileUpload();

try {

ftpUpload.connect("192.168.0.253",21,"wgr","123");

ftpUpload.uploadDirectory("E:/ztTest/appTest/t8",true,"wgr","wgr","192.168.0.253","sa","");

System.out.println("ok");

ftpUpload.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: