import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
//連接配接ftp
private boolean connect(String addr,int port,String username,String password) throws Exception
{
boolean result = false;
ftpClient = new FTPClient();
int reply;
ftpClient.connect(addr,port);
ftpClient.login(username,password);
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply))
{
ftpClient.disconnect();
return result;
}
result = true;
return result;
}
// 檔案上傳
@SuppressWarnings("unchecked")
public boolean uploadFile(String localPath,String fileName) {
try {
try {
connect(address, port, username, password);
} catch (Exception e) {
throw new UniEAPBusinessException("FTP連接配接失敗");
}
System.out.println("本地路徑路徑:" + localPath);
System.out.println("FTP路徑:" + fileName);
ftpClient.changeWorkingDirectory(fileName);
ftpClient.setFileType( FTP.BINARY_FILE_TYPE);
if("ActiveMode".equals(this.mTransMode)){
ftpClient.enterLocalActiveMode();
}else{
ftpClient.enterLocalPassiveMode();
}
System.out.println("本地檔案路徑"+localPath);
//String fileName = remotePath.substring(remotePath.lastIndexOf("/") + 1); //FTP伺服器顯示的檔案名
FileInputStream fis = new FileInputStream(localPath); //打開檔案
if(!ftpClient.storeFile(fileName, fis)) //FTP上傳檔案
{
this.mErrorsList.add(String.valueOf(ftpClient.getReplyCode()));
fis.close();
return false;
}
fis.close();
}
catch(SocketException ex)
{
ex.printStackTrace();
return false;
}
catch(IOException ex)
{
ex.printStackTrace();
return false;
}
return true;
}
public String[] downloadOneDirectory(String cDirectory,
String cLocalDirectory) throws IOException
{
changeWorkingDirectory(cDirectory);
this.enterLocalPassiveMode();
FTPFile[] files = listFiles();
String[] fileName = new String[files.length];
for(int i = 0; i < files.length; i++)
{
if(files[i].isDirectory())
{
continue;
}
if(!downloadFile(cDirectory, cLocalDirectory, files[i].getName()))
{
return null;
}
fileName[i] = files[i].getName();
}
return fileName;
}
public boolean downloadFile(String cDirectory,
String cLocalDirectory,
String cFileName)
{
System.out.print(cFileName);
try
{
changeWorkingDirectory(cDirectory);
File file = new File(cLocalDirectory + File.separator + cFileName);
FileOutputStream fos = new FileOutputStream(file);
retrieveFile(cFileName, fos);
fos.close();
}
catch(IOException ex)
{
ex.printStackTrace();
mErrorsList.add(String.valueOf(mF
public boolean downloadFile(String cDirectory,
String cLocalDirectory,
String cFileName)
{
System.out.print(cFileName);
try
{
changeWorkingDirectory(cDirectory);
File file = new File(cLocalDirectory + File.separator + cFileName);
FileOutputStream fos = new FileOutputStream(file);
retrieveFile(cFileName, fos);
fos.close();
}
catch(IOException ex)
{
ex.printStackTrace();
mErrorsList.add(String.valueOf(mFTPReplyCodeName.MCODE_601));
System.out.println(": Fail");
return false;
}
System.out.println(": Succ");
return true;
}TPReplyCodeName.MCODE_601));
System.out.println(": Fail");
return false;
}
System.out.println(": Succ");
return true;
}
@SuppressWarnings({"unchecked"})
public String unZipFiles(File zipFile, String descDir) throws IOException {
String fileName = "";
ZipFile zip = new ZipFile(zipFile,"GBK");//解決中文檔案夾亂碼
// String name = zip.getName().substring(zip.getName().lastIndexOf('\\')+1, zip.getName().lastIndexOf('.'));
File pathFile = new File(descDir);
if (!pathFile.exists()) {
pathFile.mkdirs();
}
for (Enumeration<? extends ZipEntry> entries = zip.getEntries(); entries.hasMoreElements();) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String zipEntryName = entry.getName();
fileName = zipEntryName;
InputStream in = zip.getInputStream(entry);
String outPath = (descDir +"/"+ zipEntryName).replaceAll("\\*", "/");
// 判斷路徑是否存在,不存在則建立檔案路徑
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if (!file.exists()) {
file.mkdirs();
}
// 判斷檔案全路徑是否為檔案夾,如果是上面已經上傳,不需要解壓
if (new File(outPath).isDirectory()) {
continue;
}
// 輸出檔案路徑資訊
// System.out.println(outPath);
FileOutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while ((len = in.read(buf1)) > 0) {
out.write(buf1, 0, len);
}
in.close();
out.close();
}
System.out.println("******************解壓完畢********************");
return fileName;
}