`
yzabstract
  • 浏览: 14358 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

    博客分类:
  • J2EE
阅读更多
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);

}

}

}

}
分享到:
评论

相关推荐

    MyFll Microsoft Visual FoxPro设计的扩展库

    FtpDownFile 从FTP服务器下载文件 FtpUploadFile 向FTP服务器上传文件 FtpConnect 连接FTP服务器 FtpDisconnect 断开FTP服务器连接 FtpAFile 枚举Ftp中的所有文件 FtpCreateDir 在FTP服务器上创建一个...

    计算机网络基础课程—文件传输协议(File-Transfer-Protocol).doc

    –格式控制:文件的格式控制符 –结构: 文件结构 记录结构 页结构 –传输方式:规定文件再数据连接中如何传输 流方式 块方式 压缩方式 FTP命令 FTP命令和应答在客户和服务器的控制连接上以NVT ASCII码形式传送。...

    生产服务器部署规范.docx

    Yum-updatesd Yum工具守护进程 Zip 与pkzip兼容的文件压缩打包工具 ccld 通用的USB CCID智能卡读写器驱动器产品 初始化系统需要开启的服务: 系统 服务名字 用途 生产服务器部署规范全文共7页,当前为第3页。...

    C#开发典型模块大全(光盘)第一部分

    23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载...

    JAVA上百实例源码以及开源项目

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    java源码包3

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax...

    C#开发典型模块大全

    23.5.2 从FTP服务器下载指定版本 628 23.5.3 定时升级设置 630 第24章 Windows应用程序打包与部署境 24.1 Windows Installer简介 634 24.2 Windows应用程序部署 634 24.2.1 创建部署项目 634 24.2.2 可...

    java源码包---java 源码 大量 实例

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    C#开发典型模块大全(光盘)第二部分

    23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载...

    C#开发典型模块大全(光盘)

    23.5.2 从FTP服务器下载指定版本 23.5.3 定时升级设置 第24章 Windows应用程序打包与部署境 24.1 WindowsInstaller简介 24.2 Windows应用程序部署 24.2.1 创建部署项目 24.2.2 可选的部署功能 24.3 安装及卸载...

    java源码包4

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    java源码包2

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax...

    JAVA上百实例源码以及开源项目源代码

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    PHP程序开发范例宝典III

    由于权限有限,分3部份下载 PHP程序开发范例宝典 内容提要 《PHP程序开发范例宝典》全面介绍了应用PHP进行网站开发的各种技术和技巧。《PHP程序开发范例宝典》分为20章,内容包括PHP的运行环 境配置、表单及表单...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    网上订餐系统-破解版

    1、下载安装包,将安装包下载解压后,将其中的www目录内的全部文件和目录上传到网站空间, 用FTP上 传时必须采用二进制方式。 2、将每个目录下的pics子目录设为可读写(777) 3、将news、photo、down、page模块下的...

    Windows应用程序捆绑核心编程光盘代码

    3.5 使用内存读写函数和内存映射文件通信 62 3.5.1 使用内存映射文件通信的方法 62 3.5.2 使用内存读写函数实现进程间通信的方法 62 3.5.3 使用内存读写函数实现进程间通信的实例 63 3.6 使用动态链接库通信 64 ...

Global site tag (gtag.js) - Google Analytics