从FTP服务器下载文件解压读写

package junit;

import java.io.*;
import sun.net.TelnetInputStream;
import sun.net.ftp.*;
import java.util.zip.*;

public class Testaa {
private static String path = "D:/";
private static String filenameTemp;

public static void main(String[] args) throws FileNotFoundException,
IOException, InterruptedException {
// TODO 从FTP服务器下载文件为压缩包
File f = new File("aaa.zip"); // 文件MyZIPFile.zip是最终的压缩包
String fileToDownload = ""; // 将要下载的文件名称
TelnetInputStream is = null;
byte[] b = new byte[1000];
int length = 0;
FtpClient ftp = new FtpClient("222.161.209.50", 10021);
ftp.login("yhtc_gxyh_b", "yhtc_gxyh_b2015");

if (!ftp.serverIsOpen()) {
System.out.println("Failed to login to 192.168.1.10");
return;
}
ftp.cd("/");// 设置服务器端的工作目录
ftp.binary();// 切换传输方式为二进制
if (!f.exists()) // 确认压缩文件被创建
{
f.createNewFile();
}

// 用文件输出流构建ZIP压缩输出流
ZipOutputStream zipos = new ZipOutputStream(new FileOutputStream(f));
zipos.setMethod(ZipOutputStream.DEFLATED); // 设置压缩方法
fileToDownload = "user_plan_info_20150921.txt";
is = ftp.get(fileToDownload);

// b = new byte[is .getBytes().length];
zipos.putNextEntry(new ZipEntry(fileToDownload));
// 生成一个ZIP entry,写入文件输出流中,并将输出流定位于entry起始处。
DataOutputStream os = new DataOutputStream(zipos);
// System.out.println("222");
while (true) {
String readLine = readLine(is);
if (null != readLine && !readLine.equals("")) {
String message = new String(readLine.getBytes("iso-8859-1"),
"gb2312");
if (message.indexOf("155907482991") == -1) {
continue;
}
System.out.println(message);
}
break;
}
is.close();
os.close();// 关闭数据流
}

/**
* 创建文件
*
* @throws IOException
*/
public static boolean creatTxtFile(String name) throws IOException {
boolean flag = false;
filenameTemp = path + name + ".txt";
File filename = new File(filenameTemp);
if (!filename.exists()) {
filename.createNewFile();
flag = true;
}
return flag;
}

/**
* 写文件
*
* @param newStr
*            新内容
* @throws IOException
*/
public static boolean writeTxtFile(String newStr) throws IOException {
// 先读取原有文件内容,然后进行写入操作
boolean flag = false;
String filein = newStr + "\r\n";
String temp = "";

FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;

FileOutputStream fos = null;
PrintWriter pw = null;
try {
// 文件路径
File file = new File(filenameTemp);
// 将文件读入输入流
fis = new FileInputStream(file);
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
StringBuffer buf = new StringBuffer();

// 保存该文件原有的内容
for (int j = 1; (temp = br.readLine()) != null; j++) {
buf = buf.append(temp);
// System.getProperty("line.separator")
// 行与行之间的分隔符 相当于“\n”
buf = buf.append(System.getProperty("line.separator"));
}
buf.append(filein);

fos = new FileOutputStream(file);
pw = new PrintWriter(fos);
pw.write(buf.toString().toCharArray());
pw.flush();
flag = true;
} catch (IOException e1) {
// TODO 自动生成 catch 块
throw e1;
} finally {
if (pw != null) {
pw.close();
}
if (fos != null) {
fos.close();
}
if (br != null) {
br.close();
}
if (isr != null) {
isr.close();
}
if (fis != null) {
fis.close();
}
}
return flag;
}

/**
*  * Attempts to read a line of text from the input stream.  Since a  *
* telnet input stream always ends lines in CR/LF pairs, this method  *
* returns all characters in the stream until a CR/LF pair or the  *
* end-of-stream is reached.  If no more bytes are available in the  *
* stream, <code>null</code> is returned.  *  * @return A string
* representing the next line in the input stream.  * @throws IOException If
* an I/O error occurs.  
*/
public static String readLine(TelnetInputStream is) throws IOException {

int ch = is.read();
if (ch == -1)
return null;
StringBuffer buf = new StringBuffer(100);
buf.append((char) ch);
while (true) {

ch = is.read();
switch (ch) {

case 10:
return buf.toString();
// ch = is.read();
// switch (ch) {
//
// case '\n':
// return buf.toString();
// case '\0':
// buf.append('\r');
// break;
// case -1:
// throw new IOException("Unexpected end of " + "input");
// default:
// throw new IOException("Invalid char " + "after CR: "
// + ((char) ch));
//
// }
case -1:
return buf.toString();
default:
buf.append((char) ch);

}

}

}

}

猜你喜欢

转载自yzabstract.iteye.com/blog/2246170