import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class FTPBulkFileDownloader {
public static void downloadFiles(String server, int port, String user, String pass, String remoteDir, String saveDir, String keyword) throws IOException {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
ftpClient.login(user, pass);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
List
filesToDownload = getFilesToDownload(ftpClient, remoteDir, keyword);
for (String file : filesToDownload) {
String remoteFilePath = remoteDir + "/" + file;
String saveFilePath = saveDir + File.separator + file;
downloadFile(ftpClient, remoteFilePath, saveFilePath);
} finally {
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
private static List getFilesToDownload(FTPClient ftpClient, String remoteDir, String keyword) throws IOException {
List filesToDownload = new ArrayList<>();
FTPFile[] files = ftpClient.listFiles(remoteDir);
for (FTPFile file : files) {
if (file.isFile() && file.getName().contains(keyword)) {
filesToDownload.add(file.getName());
return filesToDownload;
private static void downloadFile(FTPClient ftpClient, String remoteFilePath, String saveFilePath) throws IOException {
InputStream inputStream = ftpClient.retrieveFileStream(remoteFilePath);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(saveFilePath);
int bytesRead;
byte[] buffer = new byte[1024];
while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
System.out.println("File downloaded: " + saveFilePath);
} finally {
if (bufferedInputStream != null) {
bufferedInputStream.close();
if (fileOutputStream != null) {
fileOutputStream.close();
ftpClient.completePendingCommand();
public static void main(String[] args) {
String server = "FTPIP";
//FTP端口
int port = 21;
//用户名
String user = "";
String pass = "";
//FTP文件目录
String remoteDir = "/FTP";
//本地文件存放目录
String saveDir = "/local";
//关键字
String keyword = "222";
try {
downloadFiles(server, port, user, pass, remoteDir, saveDir, keyword);
} catch (IOException e) {
e.printStackTrace();
第1章
JAVA
PMS概述
1.1. 系统简介
JAVA
PMS是
JAVA
门户管理系统(
JAVA
Portal Management System)的简称,以Sping+Hibernate+Freemarker+Html5+jQuery为技术核心架构,集系统管理、文档管理、审核工作流、基于模板的文档发布、页面静态化、内容检索、多媒体文档管理于一身,面向广大站长、软件
开发
者、程序爱好者、网页设计师,适用于个人站长、商业企业、政府机构、教育机构和其它各种单位组织的信息门户网站建设,是一款技术先进、安全稳定、操作友好、注重用户体验的
JAVA
门户管理系统,倾力打造
JAVA
、JSP门户管理系统品牌。
1.2. 安全高效的
Java
语言
开发
Java
是一种被广泛使用的网络编程
语言
,主要应用于企业、政府部门、电信、银行、手机平台
开发
等多个领域,是现在大型软件项目
开发
中的主角,长期占据《TIOBE世界编程
语言
排行榜》第一的宝座。随着Internet的发展,
Java
语言
以其强大的生命力得到了越来越广泛的应用。
Java
语言
之所以受人推崇,是因为它确实称得上是一种新一代编程
语言
,具有面向对象、可移植性好、与硬件无关、系统强健安全、提供了并发机制、性能高的众多优点,并提供了分布性、多线程、动态性的支持。
Java
作为一种重要的
开发
工具,它具有七个主要特性:安全性、核心API、开放式标准、分布式和动态结构、面向对象、多线程、内存管理。
TIOBE发布的编程
语言
排行榜
1.3. 完善合理的技术架构
系统选用了经过
java
社区长时间使用,被证明稳定、可靠、安全、高性能的开源框架,包括Spring、Hibernate、Freemarker、jQuery、Shiro等框架。使用这些框架可以使软件
开发
更加高效、易于维护,而且具有更好的性能、更高的安全性。
1.4. 全面稳定的平台兼容性
在操作系统平台兼容性方面,系统可以在Linux、UNIX、Windows等系统上运行。客户可以根据自身情况选择自己熟悉的或正在使用的操作系统,减小维护成本。
在数据库平台兼容性方面,系统数据库持久层采用hibernate实现,使得系统可以支持几乎所有的数据库平台,包括Oracle、DB2、Microsoft SQL Server、MySQL、PostgreSQL等。这对于已经购买或熟悉某一类型数据库产品的用户非常有利,用户不必购买或维护多套不同的数据库,大幅度减低成本。
在应用服务器平台兼容性方面,系统支持跨应用服务器,如Tomcat、Weblogic、Webspere、JBoss等应用服务器,很好的满足了各层次用户的需求。
在浏览器兼容性方面,目前多种浏览器并存,使用非IE浏览器的用户越来越多,即使是IE浏览器也有多种版本。系统所有web页面制作遵循w3c标准制作,采用最新的html5规范,基于div+css布局,所有标签生成的html代码都经过跨浏览器测试。
java
script脚本基于jquery和
java
script标准编写,有效的解决了js跨浏览器的问题,系统可以在IE6、IE7、IE8、IE9、FireFox、Chrome、Opera、Safari浏览器下平稳运行。
1.5. 强大的中文采集与检索技术
系统支持强大的中文检索组件,可以对内容进行高效的全文检索,支持所有流行文档格式的检索,能够自动提取文本正文、生成内容摘要,能够自定义检索结果展现形式,以满足不同行业的特殊要求,构建细分领域内的垂直搜索引擎。
第2章 系统功能介绍
2.1. 系统登录
管理员对网站进行日常维护前须先进入管理后台登录页面,在输入帐号和密码后即可进入后台管理中心,如果登录信息输入错误超过三次,系统将要求输入验证码,防止恶意登录行为,加强系统安全性,登录界面如下图:
2.2. 我的工作台
2.2.1. 个人资料
在我的工作台中,管理员可以点击左侧的“个人资料”修改和完善自己的帐户信息,如真实姓名、电子邮箱、联系电话等,如下图所示:
2.2.2. 修改密码
点击我的工作台左侧的“修改密码”,可以对管理员登录密码进行修改,系统要求输入原密码,然后输入两次新密码,界面如下:
2.3. 文档中心
文档中心主要管理全站信息的发布,是系统的一个核心功能,可以对全站文档进行管理,栏目管理,模型管理,文档属性管理。
2.3.1. 文档管理
点击“文档中心”左侧功能菜单的“文档管理”,文档按所属栏目树形组织管理,点击相应的栏目将会在右边显示改栏目下的文章列表,配合多样化的文章搜索功能,可根据文档标题、文档状态(草稿、审核与否、回收站等)、文章属性(普通、图文、焦点、头条等)、进行文档搜索,文档列表界面如下所示:
添加或修改文章时,可设置文档所属栏目、标题、外部链接、副标题、标题颜色、短标题、自动T
本文介绍了在
Java
中,如何使用
Java
现有的可用的库来编写
FTP
客户端代码,并
开发
成Applet控件,做成基于Web的
批量
、大
文件
的上传
下载
控件。文章比较了一系列详尽的
FTP
库,以便帮助读者根据自己的需要选择其中最合适的一个。
本文介绍了在
Java
中,如何使用
Java
现有的可用的库来编写
FTP
客户端代码,并
开发
成Applet控件,做成基于Web的
批量
、大
文件
的上传
下载
控件。文章比较了...
书名:《
Java
开发
实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹)
PDF格式扫描版,全书分为24章,共817页。2011年1月出版。
全书压缩打包成4部分,这是第3部分
注:本系列图书的第I、II卷再版时均相应改名为《xxx
开发
实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的童鞋可自由匹配查找。
《
Java
开发
实战1200例》分为I、II两卷共计1200个例子,包括了
开发
中各个方面最常用的实例,是目前市场上实例最全面的
开发
类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。
本书是第II卷,以
开发
人员在项目
开发
中经常遇到的问题和必须掌握的技术为中心,介绍了应用
Java
进行桌面程序
开发
各个方面的知识和技巧,主要包括
Java
语法与面向对象技术、
Java
高级应用、窗体与控件应用、
文件
操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都是经过笔者精心筛选的,具有很强的实用性,其中一些实例是
开发
人员难于寻觅的解决方案。 本书两卷共计1200个例子,包括了
开发
中各个方面最常用的实例,是目前市场上实例最全面的
开发
类图书;本书实例来源于多位工程师的多年积累,具有很强的实用性。
本书非常适合
Java
的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合
Java
程序员参考、查阅。
第1篇
Java
语法与面向对象技术
第1章
开发
环境的应用 2
1.1
Java
环境 3
实例001
下载
JDK
开发
工具包 3
实例002 把JDK工具包安装到指定磁盘 4
实例003 设置JDK的环境变量 6
实例004 验证
Java
开发
环境 7
实例005
下载
并安装JRE执行环境 8
实例006 编程输出星号组成的等腰三角形 9
1.2
开发
工具 11
实例007
下载
最新的Eclipse 11
实例008 为最新的Eclipse安装中文
语言
包 12
实例009 活用Eclipse的工作空间 14
实例010 在Eclipse项目中编程输出字符表情 15
实例011 为Eclipse添加新的JDK环境 17
实例012 设置Eclipse中文API提示信息 18
实例013 为项目添加类库 20
实例014 使当前项目依赖另一个项目 21
1.3 界面设计器 22
实例015 安装界面设计器 22
实例016 设计Windows系统的运行对话框
界面 23
实例017 设计计算器程序界面 26
实例018 设计关于进销存管理系统的界面 27
第2章
Java
基础应用 29
2.1 基本语法 30
实例019 输出错误信息与调试信息 30
实例020 从控制台接收输入字符 31
实例021 重定向输出流实现程序日志 31
实例022 自动类型转换与强制类型转换 33
2.2 运算符 34
实例023 加密可以这样简单(位运算) 34
实例024 用三元运算符判断奇数和偶数 35
实例025 更精确地使用浮点数 35
实例026 不用乘法运算符实现2×16 37
实例027 实现两个变量的互换(不借助
第3个变量) 37
2.3 条件语句 38
实例028 判断某一年是否为闰年 38
实例029 验证登录信息的合法性 39
实例030 为新员工分配部门 40
实例031 用Switch语句根据消费金额计算折扣 41
实例032 判断用户输入月份的季节 42
2.4 循环控制 43
实例033 使用while与自增运算符循环遍历
数组 43
实例034 使用for循环输出杨辉三角 43
实例035 使用嵌套循环在控制台上输出
九九乘法表 44
实例036 用while循环计算1+1/2!+1/3!…1/20! 45
实例037 for循环输出空心的菱形 46
实例038 foreach循环优于for循环 47
实例039 终止循环体 48
实例040 循环体的过滤器 49
实例041 循环的极限 50
第3章 数组与集合的应用 51
3.1 数组演练 52
实例042 获取一维数组最小值 52
实例043 将二维数组中的行列互换 53
实例044 利用数组随机抽取幸运观众 54
实例045 用数组设置JTable表格的列名与列宽 55
3.2 数组操作 57
实例046 数组的下标界限 57
实例047 按钮控件数组实现计数器界面 58
实例048 复选框控件数组 59
实例049 用数组反转字符串 60
3.3 数组排序与查询 61
实例050 使用选择排序法 61
实例051 使用冒泡排序法 62
实例052 使用快速排序法 64
实例053 使用直接插入法 65
实例054 使用sort方法对数组进行排序 67
实例055 反转数组中元素的顺序 68
3.4 常用集合的使用 69
实例056 用动态数组保存学生姓名 69
实例057 用List集合传递学生信息 70
实例058 用TreeSet生成不重复自动排序
随机数组 71
实例059 Map映射集合实现省市级联选择框 73
第4章 字符串处理技术 75
4.1 格式化字符串 76
实例060 把数字格式化为货币字符串 76
实例061 格式化当前日期 77
实例062 货币金额大写格式 78
实例063 String类格式化当前日期 80
实例064 字符串大小写转换 82
实例065 字符与Unicode码的转换 83
4.2 辨别字符串 84
实例066 判断用户名是否正确 84
实例067 用户名排序 85
实例068 判断网页请求与
FTP
请求 86
实例069 判断
文件
类型 87
实例070 判断字符串是否为数字 89
实例071 验证IP地址的有效性 90
实例072 鉴别非法电话号码 91
4.3 操作字符串 92
实例073 根据标点符号对字符串进行分行 92
实例074 将字符串的每个字符进行倒序输出 94
实例075 获取字符串中汉字的个数 94
实例076
批量
替换某一类字符串 95
实例077 把异常与错误信息显示到窗体中 97
实例078 从字符串中分离
文件
路径、
文件
名及扩展名 98
实例079 判断手机号的合法性 99
实例080 用字符串构建器追加字符 100
实例081 去掉字符串中的所有空格 101
实例082 汉字与区位码的转换 102
第5章 面向对象技术应用 103
5.1
Java
中类的定义 104
实例083 自定义图书类 104
实例084 温度单位转换工具 105
实例085 域的默认初始化值 106
实例086 编写同名的方法 107
实例087 构造方法的应用 108
5.2 修饰符的使用 109
实例088 单例模式的应用 109
实例089 祖先的止痒药方 110
实例090 统计图书的销售量 111
实例091 汉诺塔问题求解 112
实例092 不能重写的方法 113
5.3 包装类的使用 114
实例093 将字符串转换成整数 114
实例094 整数进制转换器 115
实例095 查看数字的取值范围 116
实例096 ASCII编码查看器 117
实例097 Double类型的比较 118
5.4 面向对象的特征 119
实例098 经理与员工的差异 119
实例099 重写父类中的方法 121
实例100 计算几何图形的面积 122
实例101 提高产品质量的方法 123
实例102 简单的汽车销售商场 124
5.5 Object类的应用 126
实例103 两只完全相同的宠物 126
实例104 简化equals()方法的重写 127
实例105 重新计算对象的哈希码 129
实例106 简化hashCode()方法的重写 130
实例107 使用字符串输出对象 132
实例108 简化toString()方法的重写 133
5.6 克隆与序列化 134
实例109
Java
对象的假克隆 134
实例110
Java
对象的浅克隆 135
实例111
Java
对象的深克隆 137
实例112 序列化与对象克隆 139
实例113 深克隆效率的比较 141
实例114 transient
关键字
的应用 143
5.7 接口和内部类 145
实例115 使用sort()方法排序 145
实例116 简化compareTo()方法的重写 146
实例117 策略模式的简单应用 148
实例118 适配器模式的简单应用 149
实例119 普通内部类的简单应用 151
实例120 局部内部类的简单应用 152
实例121 匿名内部类的简单应用 153
实例122 静态内部类的简单应用 154
第2篇
Java
高级应用
第6章 多线程技术 158
6.1 线程的基础 159
实例123 新建无返回值的线程 159
实例124 查看线程的运行状态 160
实例125 查看JVM中的线程名 161
实例126 查看和修改线程名称 163
实例127 查看和修改线程优先级 165
实例128 使用守护线程 166
实例129 休眠当前线程 167
实例130 终止指定线程 169
实例131 线程的插队运行 170
6.2 线程的同步 171
实例132 非同步的数据读写 171
实例133 使用方法实现线程同步 172
实例134 使用代码块实现线程同步 174
实例135 使用特殊域变量实现线程同步 175
实例136 使用重入锁实现线程同步 176
实例137 使用线程局部变量实现线程同步 177
实例138 简单的线程通信 179
实例139 简单的线程死锁 180
实例140 解决线程的死锁问题 182
6.3 线程的进阶 183
实例141 使用阻塞队列实现线程同步 183
实例142 新建有返回值的线程 184
实例143 使用线程池优化多线程编程 186
实例144 Object类中线程相关的方法 187
实例145 哲学家就餐问题 189
实例146 使用信号量实现线程同步 190
实例147 使用原子变量实现线程同步 191
实例148 使用事件分配线程更新Swing控件 193
实例149 使用SwingWorker类完成耗时操作 194
第7章 反射与异常处理 195
7.1 反射的基础 196
实例150 实例化Class类的5种方式 196
实例151 获得Class对象表示实体的名称 197
实例152 查看类的声明 198
实例153 查看类的成员 199
实例154 按继承层次对类排序 201
实例155 查看内部类信息 202
7.2 反射的进阶 203
实例156 动态设置类的私有域 203
实例157 动态调用类中的方法 204
实例158 动态实例化类 205
实例159 创建长度可变的数组 206
实例160 利用反射重写toString()方法 208
实例161 反射与动态代理 209
7.3 常见的未检查型异常 210
实例162 算数异常 210
实例163 数组存值异常 211
实例164 数组下标越界异常 212
实例165 空指针异常 213
7.4 常见的已检查型异常 214
实例166 类未发现异常 214
实例167 非法访问异常 215
实例168
文件
未发现异常 216
实例169 数据库操作异常 217
7.5 处理异常 218
实例170 方法中抛出异常 218
实例171 方法上抛出异常 219
实例172 自定义异常类 220
实例173 捕获单个异常 221
实例174 捕获多个异常 222
第8章 枚举与泛型的应用 223
8.1 枚举使用的简介 224
实例175 查看枚举类型的定义 224
实例176 枚举类型的基本特性 225
实例177 增加枚举元素的信息 226
实例178 选择合适的枚举元素 227
实例179 高效的枚举元素集合 228
实例180 高效的枚举元素映射 229
实例181 遍历枚举接口的元素 230
实例182 简单的
文件
合并工具 231
8.2 泛型使用的简介 233
实例183 自定义非泛型栈结构 233
实例184 使用泛型实现栈结构 234
实例185 自定义泛型化数组类 235
实例186 泛型方法与数据查询 236
实例187 泛型化方法与最小值 238
实例188 泛型化接口与最大值 239
实例189 使用通配符增强泛型 240
实例190 泛型化的折半查找法 241
第9章 编程常用类 343
9.1 Calendar类的使用 244
实例191 简单的数字时钟 244
实例192 简单的电子时钟 245
实例193 简单的模拟时钟 246
实例194 简单的公历万年历 248
实例195 查看生日相关信息 249
9.2 SimpleDateFormat与TimeZone
类的使用 250
实例196 日期格式有效性判断 250
实例197 常见日期格式使用 252
实例198 查看本地时区 253
实例199 简单的时区转换工具 254
9.3 System类的使用 255
实例200 查看常用系统属性 255
实例201 重定向标准输出 256
实例202 计算程序运行时间 257
实例203 从控制台输入密码 258
9.4 Math类的使用 259
实例204 角度和弧度的转换 259
实例205 三角函数的使用 260
实例206 反三角函数的使用 261
实例207 双曲函数的使用 262
实例208 指数与对数运算 263
9.5 其他常用类的使用 264
实例209 高精度整数运算 264
实例210 高精度浮点运算 265
实例211 七星彩号码生成器 266
实例212 大乐透号码生成器 267
实例213 监视JVM内存状态 268
实例214 启动默认文本工具 269
实例215 简单的截图软件 270
第10章 Commons组件 272
10.1 Commons Lang组件简介 273
实例216 数组元素的增加 273
实例217 数组元素的删除 274
实例218 生成随机字符串 275
实例219 序列化与反序列化 276
实例220 分数的常见运算 277
实例221 整数取值范围判断 279
10.2 Commons Math组件简介 280
实例222 描述统计学应用 280
实例223 绘制简单直方图 281
实例224 一元线性回归计算 282
实例225 实数矩阵的运算 283
实例226 复数的常见运算 284
实例227 T分布常用计算 285
10.3 Commons IO组件简介 286
实例228 简化
文件
(夹)删除 286
实例229 简化
文件
(夹)复制 287
实例230 简化
文件
(夹)排序 288
实例231 简化
文件
(夹)过滤 289
实例232 简化
文件
的读写操作 290
10.4 Commons BeanUtils组件简介 291
实例233 设置
Java
Bean简单属性 291
实例234 设置
Java
Bean级联属性 293
实例235 动态生成
Java
Bean 295
实例236 复制
Java
Bean属性 296
实例237 动态排序
Java
Bean 298
10.5 其他Commons组件简介 299
实例238 优雅的JDBC代码 299
实例239 结果集与Bean列表 301
实例240 编写MD5查看器 302
实例241 基于Base64编码 304
实例242 基于Base64解码 305
实例243 发送简单的Email 306
实例244 发送带附件的Email 308
实例245 读取XML
文件
属性 310
第3篇 窗体与控件应用
第11章 窗体设计 314
11.1 设置窗体位置 315
实例246 控制窗体加载时的位置 315
实例247 设置窗体在屏幕中的位置 315
实例248 从上次关闭位置启动窗体 316
实例249 始终在桌面最顶层显示的窗体 317
11.2 设置窗体大小 319
实例250 设置窗体大小 319
实例251 根据桌面大小调整窗体大小 320
实例252 自定义最大化、最小化和关闭按钮 321
实例253 禁止改变窗体的大小 323
11.3 设置窗体的标题栏 324
实例254 指定窗体标题栏图标 324
实例255 拖动没有标题栏的窗体 325
实例256 取消窗体标题栏与边框 326
实例257 设置闪烁的标题栏 328
11.4 设置窗体的背景 329
实例258 设置窗体背景颜色为淡蓝色 329
实例259 实现带背景图片的窗体 330
实例260 使背景图片自动适应窗体的大小 331
实例261 背景为渐变色的主界面 332
实例262 随机更换窗体背景 334
11.5 窗体形状及应用 335
实例263 椭圆形窗体界面 335
实例264 钻石形窗体 336
实例265 创建透明窗体 337
11.6 对话框 338
实例266 模态对话框与非模态对话框 338
实例267 信息提示对话框 340
实例268 设置信息提示对话框的图标 341
实例269
文件
选择对话框指定数据库备份
文件
342
实例270 指定打开对话框的
文件
类型 343
实例271
文件
的保存对话框 344
实例272 为保存对话框设置默认
文件
名 346
实例273 支持图片预览的
文件
选择对话框 347
实例274 颜色选择对话框 348
实例275 信息输入对话框 350
实例276 定制信息对话框 350
11.7 MDI窗体的使用 352
实例277 创建内部子窗体 352
实例278 使子窗体最大化显示 353
实例279 对子窗体进行平铺排列 354
实例280 禁用MDI窗体控制栏中的“最大化”
按钮 355
第12章 窗体特效 357
12.1 让窗体更有活力 358
实例281 右下角弹出信息窗体 358
实例282 淡入淡出的窗体 359
实例283 窗体顶层的进度条 361
实例284 设置窗体的鼠标光标 362
实例285 窗体抖动 363
实例286 窗体标题显示计时器 364
实例287 动态展开窗体 365
实例288 仿QQ隐藏窗体 366
实例289 窗体百叶窗登场特效 367
实例290 关闭窗体打开网址 368
12.2 窗体与控件外观 369
实例291 Nimbus外观 369
实例292 本地系统外观 370
实例293 分割的窗体界面 371
实例294 圆周运动的窗体 373
第13章 基本控件应用 375
13.1 顶层容器的应用 376
实例295 框架容器的背景图片 376
实例296 更多选项的框架容器 377
实例297 拦截事件的玻璃窗格 378
实例298 简单的每日提示信息 379
实例299 震动效果的提示信息 380
13.2 布局管理器应用 382
实例300 边框布局的简单应用 382
实例301 流式布局的简单应用 383
实例302 网格布局的简单应用 384
实例303 制作圆形布局管理器 385
实例304 制作阶梯布局管理器 386
13.3 输入控件的应用 387
实例305 可以打开网页的标签 387
实例306 密码域控件的简单应用 389
实例307 给文本域设置背景图片 390
实例308 给文本区设置背景图片 391
实例309 简单的字符统计工具 392
13.4 选择控件的应用 393
实例310 能预览图片的复选框 393
实例311 简单的投票计数软件 394
实例312 单选按钮的简单应用 395
实例313 能显示图片的组合框 396
实例314 使用滑块来选择日期 398
13.5 菜单控件的应用 400
实例315 模仿记事本的菜单栏 400
实例316 自定义纵向的菜单栏 401
实例317 复选框与单选按钮菜单 402
实例318 包含图片的弹出菜单 404
实例319 工具栏的实现与应用 405
13.6 其他技术的应用 406
实例320 自定义软件安装向导 406
实例321 查看系统支持的外观 407
实例322 制作软件的闪屏界面 408
实例323 自定义系统托盘图标 410
实例324 使用撤销与重做功能 412
第14章 复合数据类型控件应用 414
14.1 列表的简单应用 415
实例325 修改列表项显示方式 415
实例326 修改列表项选择模式 416
实例327 列表项的全选与不选 417
实例328 列表元素与提示信息 419
实例329 监听列表项单击事件 420
实例330 监听列表项双击事件 421
14.2 列表的高级应用 422
实例331 实现自动排序的列表 422
实例332 列表项的增加与删除 423
实例333 查找特定的列表元素 425
实例334 包含边框的列表元素 426
实例335 包含图片的列表元素 427
实例336 可以预览字体的列表 428
14.3 表格的简单应用 430
实例337 表头与列的高度设置 430
实例338 调整表格各列的宽度 431
实例339 设置表格的选择模式 433
实例340 为表头增添提示信息 434
实例341 单元格的粗粒度排序 436
实例342 实现表格的查找功能 437
14.4 表格的高级应用 438
实例343 在表格中应用组合框 438
实例344 删除表格中选中的行 440
实例345 实现表格的分页技术 442
实例346 为单元格绘制背景色 444
实例347 实现表格的栅栏效果 445
实例348 单元格的细粒度排序 446
14.5 树控件简单应用 448
实例349 编写中国省市信息树 448
实例350 树控件常用遍历方式 449
实例351 自定义树节点的图标 451
实例352 监听节点的选择事件 452
实例353 设置树控件选择模式 453
实例354 查看节点的各种状态 455
14.6 树控件高级应用 456
实例355 在树控件中增加节点 456
实例356 在树控件中删除节点 458
实例357 在树控件中查找节点 459
实例358 自定义树节点的外观 460
实例359 为树节点增加提示信息 463
实例360 双击编辑树节点功能 464
第15章 其他高级控件应用 466
15.1 JTextPane控件的应用 467
实例361 自定义文档标题的样式 467
实例362 文档中显示自定义图片 468
实例363 检查代码中的括号是否匹配 469
实例364 描红显示100以内的质数 471
15.2 JEditorPane控件的应用 472
实例365 自定义RTF
文件
查看器 472
实例366 编写简单的浏览器 474
实例367 支持超链接的浏览器 474
实例368 高亮用户指定的
关键字
476
15.3 其他文本控件的应用 477
实例369 只能输入整数的文本域 477
实例370 强制输入合法的整数 478
实例371 使用微调控件调整时间 479
实例372 使用微调控件浏览图片 480
15.4 进度指示器的应用 481
实例373 显示完成情况的进度条 481
实例374 监听进度条的变化事件 482
实例375 进度监视器控件的应用 484
实例376 监视
文件
读入的进度 485
15.5 控件组织器的应用 487
实例377 分割面板的简单应用 487
实例378 为选项卡增加快捷键 488
实例379 为选项卡标题设置图标 489
实例380 记录选项卡的访问状态 490
第16章 控件特效与自定义控件 492
16.1 控件边框效果 493
实例381 实现标签控件的立体边框 493
实例382 实现按钮控件边框留白 494
实例383 实现文本域控件的浮雕化边框 495
实例384 为文本框控件添加LineBorder
线形边框 496
实例385 控件的纯色边框与图标边框 498
实例386 实现带标题边框的面板容器 499
实例387 指定字体的标题边框 501
实例388 嵌套的标题边框 502
实例389 带图标边框的标题边框 503
实例390 文本框的下划线边框 504
16.2 控件渲染让界面UI更灵活 506
实例391 支持图标的列表控件 506
实例392 在列表控件中显示单选按钮 507
实例393 列表控件折行显示列表项 508
实例394 使用图片制作绚丽按钮 510
实例395 实现按钮
关键字
描红 511
实例396 忙碌的按钮控件 512
实例397 实现透明效果的表格控件 513
实例398 在表格中显示工作进度百分比 515
实例399 在表格中显示图片 517
16.3 让控件活起来 518
实例400 鼠标经过时按钮放大效果 518
实例401 迟到的登录按钮 520
实例402 焦点按钮的缩放 521
实例403 标签文本的跑马灯特效 522
实例404 延迟生效的按钮 524
实例405 动态加载表格数据 525
16.4 自定义控件 526
实例406 石英钟控件 526
实例407 IP输入文本框控件 527
实例408 日历控件 530
实例409 平移面板控件 531
实例410 背景图面板控件 533
第4篇
文件
操作典型应用
第17章
文件
与
文件
夹操作 536
17.1
文件
操作 537
实例411 修改
文件
属性 537
实例412 显示指定类型的
文件
538
实例413 以树结构显示
文件
路径 540
实例414 查找替换文本
文件
内容 541
实例415 支持图片预览的
文件
选择对话框 543
实例416 设置Windows的
文件
属性 545
实例417
文件批量
重命名 547
实例418 快速
批量
移动
文件
549
实例419 删除磁盘中所有的.tmp临时
文件
551
17.2
文件
与数据库 553
实例420 提取数据库内容到
文件
553
实例421 提取文本
文件
的内容到MySQL数据库 555
实例422 将图片
文件
保存到SQL Server数据库 556
实例423 显示数据库中的图片信息 558
实例424 提取技术网站数据到
文件
夹 559
实例425 读取
文件
路径到数据库 561
实例426 在数据库中建立磁盘
文件
索引 562
17.3 操作磁盘
文件
夹 564
实例427 窗体动态加载磁盘
文件
564
实例428 删除
文件
夹中所有
文件
565
实例429 创建磁盘索引
文件
567
实例430 快速全盘查找
文件
568
实例431 获取磁盘所有文本
文件
570
实例432 网络
文件
夹备份 571
第18章
文件
的读取、写入、整理和控制 573
18.1
文件
的读取与写入 574
实例433 键盘录入内容保存到文本
文件
574
实例434 将数组写入到
文件
中并逆序输出 575
实例435 利用StringBuffer避免
文件
的多次写入 576
实例436 合并多个txt
文件
577
实例437 实现
文件
简单加密与解密 579
实例438 对大
文件
实现分割处理 581
实例439 将分割后的
文件
重新合并 583
实例440 读取属性
文件
的单个属性值 584
实例441 向属性
文件
中添加信息 585
实例442 在复制
文件
时使用进度条 586
实例443 从XML
文件
中读取数据 587
实例444 读取Jar
文件
属性 589
实例445 电子通讯录 590
18.2 实现
文件
整理 592
实例446
批量
复制指定扩展名的
文件
592
实例447 计数器小程序 594
实例448 将某
文件
夹中的
文件
进行分类存储 595
18.3
文件
控制 597
实例449 利用StreamTokenizer统计
文件
的
字符数 597
实例450 在指定目录下搜索
文件
598
实例451 序列化和反序列化对象 600
实例452
文件
锁定 602
实例453 投票统计 603
第19章
文件
压缩 605
19.1
Java
实现
文件
压缩 606
实例454 压缩所有文本
文件
606
实例455 压缩包解压到指定
文件
夹 607
实例456 压缩所有子
文件
夹 608
实例457 深层
文件
夹压缩包的释放 610
实例458 解决压缩包中文乱码 611
实例459 Apache实现
文件
解压缩 612
实例460 把窗体压缩成ZIP
文件
613
实例461 解压缩
Java
对象 615
19.2 RAR
文件
压缩 616
实例462
文件
压缩为RAR文档 616
实例463 解压缩RAR压缩包 619
实例464
文件
分卷压缩 621
实例465 为RAR压缩包添加注释 623
实例466 获取压缩包详细
文件
列表 625
实例467 从RAR压缩包中删除
文件
627
实例468 在压缩
文件
中查找字符串 628
实例469 重命名RAR压缩包中的
文件
629
实例470 创建自解压RAR压缩包 631
实例471 设置RAR压缩包密码 632
19.3 数据压缩的网络应用 634
实例472 以压缩格式传输网络数据 634
实例473 压缩远程
文件
夹 637
实例474 压缩存储网页 638
第20章 操作办公文档 640
20.1 操作Word 641
实例475 把文本
文件
导入到Word中 641
实例476 浏览本地Word
文件
642
实例477 将员工表插入到Word文档中 644
实例478 将员工照片插入到Word简历 645
实例479 将Word文档保存为HTML格式 646
20.2 操作Excel 647
实例480 将员工信息保存到Excel表中 647
实例481 通过Excel公式计算出商品表中的
总售价 649
实例482 将数据库表中的内容写入到Excel 651
实例483 将Excel表中的内容保存到数据库 653
实例484 将Excel
文件
转换为HTML格式 654
20.3 操作PDF 655
实例485 应用iText组件生成PDF 655
实例486 在窗体中显示PDF
文件
657
实例487 应用PDF Renderer组件实现放大
PDF
文件
658
实例488 应用PDF Renderer组件实现缩小
PDF
文件
660
实例489 应用PDF Renderer组件实现抓手功能 661
实例490 全屏显示PDF
文件
662
第5篇 数据库应用
第21章 SQL应用 666
21.1 排序和分组函数应用 667
实例491 对数据进行降序查询 667
实例492 对数据进行多条件排序查询 669
实例493 对统计结果进行排序 670
实例494 查询SQL Server数据库中的前3条
数据 671
实例495 查询SQL Server数据库中的后3
条数据 672
实例496 查询MySQL数据库中的前3条数据 673
实例497 查询MySQL数据库中的后3条数据 674
实例498 按照字母顺序对留学生表进行排序 675
实例499 按姓氏笔画排序 677
实例500 将汉字按音序排序 678
实例501 按列的编号排序 679
实例502 从表中随机返回记录 680
实例503 使用GROUP BY子句实现对数据的
分组统计 681
实例504 使用GROUP BY子句实现多表
分组统计 682
21.2 聚集函数与日期查询 683
实例505 利用SUM函数实现数据汇总 683
实例506 利用AVG函数实现计算平均值 684
实例507 利用MIN函数求数据表中的最小值 685
实例508 利用MAX函数求数据表中的最大值 686
实例509 利用COUNT函数求销售额大于某值的
图书种类 688
实例510 查询编程词典6月的销售量 689
实例511 查询与张静同一天入司的员工信息 690
实例512 使用IN谓词查询某几个时间的数据 692
实例513 日期查询中避免千年虫问题 693
21.3 大小比较与逻辑应用 694
实例514 在查询结果中不显示重复记录 694
实例515 使用NOT查询不满足条件的记录 695
实例516 使用between进行区间查询 697
实例517 列出销量表中的重复记录和记录条数 698
实例518 使用关系运算符查询某一时间段数据 699
实例519 计算两个日期之间的月份数 700
实例520 格式化金额 702
实例521 在查询语句中过滤掉字符串中的空格 703
第22章 数据库操作 705
22.1 通过JDBC-ODBC桥连接数据库 706
实例522 通过JDBC-ODBC桥连接SQL Server
2000数据库 706
实例523 JDBC-ODBC桥连接Access数据库 708
实例524 JDBC-ODBC桥与Oracle数据库
建立连接 710
22.2 JDBC技术连接数据库 711
实例525 通过JDBC连接SQL Server 2000
数据库 711
实例526 JDBC连接MySQL数据库 713
实例527 JDBC连接SQL Server 2005数据库 714
实例528 JDBC技术连接Oracle数据库 715
实例529 JDBC连接
Java
DB数据库 716
22.3 数据库与数据表 717
实例530 列举SQL Server数据库下的数据表 717
实例531 列举MySQL数据库下的数据表 718
实例532 查看数据表结构 719
实例533 动态维护投票数据库 721
实例534 SQL Server数据备份 722
实例535 SQL Server数据恢复 725
实例536 MySQL数据备份 728
实例537 MySQL数据恢复 730
实例538 动态附加数据库 731
实例539 生成SQL数据库脚本 733
实例540 获取SQL Server数据表字段的描述信息 734
22.4 数据增加、更新与删除操作 736
实例541 将员工信息添加到数据表 736
实例542 添加数据时使用数据验证 737
实例543 插入用户登录日志信息 739
实例544 生成有规律的编号 740
实例545 生成无规律的编号 742
实例546 在插入数据时过滤掉危险字符 743
实例547 将用户选择的爱好以字符串形式保存
到数据库 744
实例548 将数据从一张表复制到另一张表 745
实例549 使用UNION ALL语句
批量
插入数据 746
实例550 更新指定记录 747
实例551 在删除数据时给出提示信息 748
实例552 将数据表清空 749
实例553 字符串大小写转换 750
第23章 数据查询 752
23.1 使用子查询 753
实例554 将子查询作为表达式 753
实例555 用子查询作为派生表 754
实例556 通过子查询关联数据 755
实例557 使用IN谓词限定查询范围 756
实例558 使用NOT IN子查询实现差集运算 758
实例559 使用NOT IN子查询实现反向查询 759
实例560 返回笛卡尔乘积 760
实例561 比较运算符引入子查询 761
实例562 在子查询中使用聚集函数 762
实例563 在删除数据时使用子查询 763
23.2 嵌套查询 764
实例564 查询平均成绩在85分以上的学生信息 764
实例565 查询本科部门经理月收入情况 766
实例566 在嵌套中使用EXISTS
关键字
767
实例567 动态指定查询条件 768
23.3 连接查询 769
实例568 使用UNION运算符使学生档案归档 769
实例569 内连接获取指定课程的教师信息 771
实例570 左外连接查询员工信息 772
实例571 右外连接查询员工信息 773
实例572 多表外连接查询 774
实例573 完全连接查询 775
23.4 函数查询 777
实例574 在查询中使用patindex()函数进行
模糊查询 777
实例575 对查询结果进行格式化 778
实例576 在查询中使用字符串函数 780
实例577 在查询中使用ALL谓词 781
实例578 在查询中使用ANY谓词 782
实例579 使用UNION运算符消除重复的行 784
实例580 使用UNION ALL运算符保留重复的行 785
实例581 计算商品销售额所占的百分比 786
第24章 数据库高级应用 787
24.1 在
Java
程序中使用存储过程 788
实例582 调用存储过程实现用户身份验证 788
实例583 应用存储过程添加数据 789
实例584 调用加密存储过程 791
实例585 获取数据库中所有存储过程 792
实例586 修改存储过程 793
实例587 删除存储过程 795
24.2 使用触发器 796
实例588 应用触发器添加日志信息 796
实例589 在删除成绩表时将学生表中的数据删除 798
实例590 在程序中调用UPDATE触发器 799
实例591 获取数据库中的触发器名称 801
实例592 创建带有触发条件的触发器 802
24.3 使用批处理 803
实例593 使用批处理删除数据 803
实例594 使用批处理提升部门员工工资 805
实例595 将教师表中的数据全部添加到选课表 806
实例596 在批处理中使用事务 807
24.4 使用视图 809
实例597 创建视图 809
实例598 使用视图过滤不想要的数据 810
实例599 使用视图与计算数据 812
实例600 使用视图重新格式化检索出来的数据 813
实例601 获取数据库中的全部用户视图 814
实例602 修改视图 815
实例603 删除视图 816
要使用
Java
实现
FTP
批量
下载
文件
,可以使用Apache的Commons Net库来简化
FTP
操作。以下是一个使用
Java
实现的简单示例:
首先,需要在项目中导入Apache Commons Net库的依赖,例如使用Maven:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.7.2</version>
</dependency>
然后,可以创建一个
FTP
下载
器的类来实现
批量
下载
文件
的功能。示例代码如下:
```
java
import org.apache.commons.net.
ftp
.
FTP
;
import org.apache.commons.net.
ftp
.
FTP
Client
;
import
java
.io.FileOutputStream;
import
java
.io.IOException;
public class
FTP
Downloader {
private static final String SERVER = "
ftp
.example.com";
private static final int PORT = 21;
private static final String USERNAME = "username";
private static final String PASSWORD = "password";
public static void main(String[] args) {
FTP
Client
ftp
Client
= new
FTP
Client
();
try {
ftp
Client
.connect(SERVER, PORT);
ftp
Client
.login(USERNAME, PASSWORD);
ftp
Client
.setFileTransferMode(
FTP
.BINARY_FILE_TYPE);
ftp
Client
.enterLocalPassiveMode();
ftp
Client
.setFileType(
FTP
.BINARY_FILE_TYPE);
ftp
Client
.changeWorkingDirectory("/path/to/remote/directory");
String[] fileNames =
ftp
Client
.listNames();
for (String fileName : fileNames) {
if (fileName.endsWith(".txt")) {
FileOutputStream outputStream = new FileOutputStream("download/" + fileName);
ftp
Client
.retrieveFile(fileName, outputStream);
outputStream.close();
ftp
Client
.logout();
ftp
Client
.disconnect();
} catch (IOException e) {
e.printStackTrace();
在上述代码中,我们首先创建了一个`
FTP
Client
`对象,并连接到指定的
FTP
服务器。然后,我们使用登录凭据进行身份验证。
接下来,我们设置
FTP
客户端的传输模式和
文件
类型为二进制。我们还设置了被动模式,以避免由于防火墙等原因导致的连接问题。
然后,我们切换到
FTP
服务器上指定的远程目录,并获取该目录中的所有
文件
名列表。
最后,我们遍历
文件
名列表,检查
文件
扩展名,如果
文件
扩展名为`.txt`,则将其
下载
到本地目录`download/`中。
最后,我们断开与
FTP
服务器的连接。
请注意,上述代码仅提供一个简单的示例,并未处理所有可能出现的异常情况。在实际应用中,您可能需要进一步完善代码,以处理可能的错误和异常情况。