- 浏览: 232232 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
插上翅膀的小猪:
同意三楼的意见。
下载服务器上的文件-纯java处理 -
ITQCF:
一楼所言极是啊,encodeFileName这个方法为嘛找不到 ...
下载服务器上的文件-纯java处理 -
u011296404:
这个不适用与ie浏览器
下载服务器上的文件-纯java处理 -
冬天秋天:
博主 这个貌似在oracle 数据库下没有成功啊……
更新一个表的字段值等于另一个表的字段值的SQL语句 -
pangpang514:
WebUtils是在org.springframework.w ...
下载服务器上的文件-纯java处理
需求:大批量的数据,包含多级目录,目录结构不确定,最后的文件为excel,最终目的是将excel中的数据导入到数据库。开始是做的在页面上传,压缩文件太大,有230多M,页面直接就报错了。后来就是修改为直接读取服务器的文件
import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ImportInvalidCardNo { /* * 后台批量导入废卡记录 * 该类在window下面运行不需要处理字符转码 * 在linux环境下要修改/etc/sysconfig/i18n 中LANG="zh_CN.GBK" * 在Aix系统下需要处理转码 * */ public String batchInsertInvalidCardNo() throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); String fileUrl ="E:/test/"; File file = new File(fileUrl); File[] files = file.listFiles();// 获取该目录下的所有文件 String data = ""; String url = ""; for (File f : files) { String filepath = f.getName(); String zipUrl = filepath.substring( filepath.lastIndexOf('.') + 1).trim(); if (zipUrl.equals("zip")) { ZipFile z1 = new ZipFile(f); Enumeration emun = z1.getEntries(); while (emun.hasMoreElements()) { ZipEntry entry = (ZipEntry) emun.nextElement(); // 执行数据库及读取文件 try { if (!entry.isDirectory()) { url = entry.getName(); List<InvalidCardNo> oneFileInfo = this.readFile(z1, entry); ServiceReturn sRet =this.importInvalidCardNoService.addInvalidCardNo(oneFileInfo,url);//这是后台执行程序 } } catch (Exception e) { // 不捕获异常,记录错误信息,继续执行 ErrorCardscrapinfotb errorCardscrapinfotb = new ErrorCardscrapinfotb(); //url=new String(url.getBytes("ISO8859_1"),"GBK");//该行代码只针对测试测试环境Aix系统,windows下测试需注释掉 errorCardscrapinfotb.setErrorfileurl(url); ServiceReturn sRet = this.importInvalidCardNoService.addErrorCardscrapinfotb(errorCardscrapinfotb); //e.printStackTrace(); continue; } } z1.close(); File dleteFile = new File(deleteUrl); dleteFile.delete(); } } data = "共成功导入" + successCount + "条,请检查记录表是否有损坏的文件!"; ServiceReturn sRet = new ServiceReturn(true, "SUCCESS"); JSONObject retObj = super.convertServiceReturnToJson(sRet); retObj.put("retmsg", data); super.setActionresult(retObj.toString()); return AJAX_SUCCESS; } private List<InvalidCardNo> readFile(ZipFile z1, ZipEntry entry) throws Exception { // 创建输入流 InputStream in = z1.getInputStream(entry); List<InvalidCardNo> invalidCardNoList = new ArrayList<InvalidCardNo>(); Cell cell = null; Workbook wb = Workbook.getWorkbook(in); // 得到工作薄 Sheet sheet=null; try { sheet = wb.getSheet(0);// 得到工作薄中的第一个工作表 // 获取第一行的信息 cell = sheet.getCell(0, 0); } catch (Exception e) { sheet = wb.getSheet(1);// if工作薄中的第一个工作表不是需要的工作表,取第二个 // 获取第一行的信息 cell = sheet.getCell(0, 0); } String fistInfo = cell.getContents(); // 行数引从2开始,从第2行开始获取数据,前2行为标题和说明。 for (int i = 2; i < sheet.getRows(); i++) { // 获取列数 for (int j = 0; j < sheet.getColumns() - 1; j++) { j++; cell = sheet.getCell(j, i); if (!(cell.getContents().trim().equals("") || cell.getContents() == null)) { InvalidCardNo info = new InvalidCardNo(); // 获取第i行,第j列的值 String tempcard = cell.getContents(); String cityCode = tempcard.substring(0, 4); String cardNo = tempcard.substring(4, 16); info.setCitycode(Integer.valueOf(cityCode)); info.setCardno(cardNo); invalidCardNoList.add(info); } } } in.close(); return invalidCardNoList; } }
问题一。 开始引入的包为java.util.* 在windows环境下读取具体excel文件名的时候就乱码了,InputStream in = z1.getInputStream(entry); 其中entry.getName()乱码,这样就没办法读取到文件了,后来改成
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
的包,乱码解决,可以在windows下正常运行了;
问题二:部署到Linux环境下,读取文件路径的时候就乱码了,具体原因为在Linux上解压缩一个从Windows平台压缩的包含有中文文件名的zip文件时,解压缩出来的文件名会是乱码。该问题的根本原因是Windows中文版上压缩一个zip文件时,Windows会使用GBK为文件名编码,这是不合理的。正常的方式应该是象Linux平台一样,默认使用UTF-8编码。
各种转码都试了一遍,也没起作用,在网上搜了个遍有2种方式解决问题:
1. 通过unzip行命令解压,指定字符集
unzip -O CP936 xxx.zip (用GBK, GB18030也可以)
有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明。
2. 在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件
/etc/environment中加入2行
UNZIP="-O CP936"
ZIPINFO="-O CP936"
发现第一种和我们的不相符,第二中试了没起作用
最后还是将linux当前环境设置为中文环境即可。
修改/etc/sysconfig/i18n 文件
LANG="zh_CN.GB2312" 或者设置为LANG="zh_CN.GBK"都可以;
问题三:在Linux下修改成功了,线上环境又是Aix,真是郁闷哦,不过AIX系统下,可以读到文件名,就是在插入数据库的时候乱码了,这个比较好解决了, 对插入数据库的url转码就可以了
url=new String(url.getBytes("ISO8859_1"),"GBK")
乱码多种情况就都解决了!
发表评论
-
测速网站
2016-09-06 18:01 0https://www.webpagetest.org/能 ... -
高并发量网站解决方案
2015-07-10 10:41 1102一个小型的网站,可以 ... -
ubantu自带的tcpdump(抓包工具的使用)
2012-08-29 19:17 10471.在命令下 root@ubantu:~# man tcpd ... -
MyEclipse8.6安装svn(非link方式) .
2012-06-06 18:27 1523此方法经试验可行, ... -
J2EE 领域的一些技术框架结构图
2012-05-10 13:19 1096顶 1 踩 1.Spring 架构图 ... -
Eclipse以及Myeclipse 单步调试
2012-04-11 12:39 14131.在Eclipse中启动Tomcat。 2.在待调试的 ... -
10 个技巧让你的 RESTful Web 服务更加实用
2012-04-10 11:12 772提示:随着RESTful Web services的流行程度不 ... -
关于JSP网页开发中tomcat、myeclipse完全配置
2012-04-06 18:09 2099关于JSP网页开发中tomcat ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2012-02-18 20:16 1000后来发现是在中心创建这个工程的时候,使用的JDK是Java5但 ... -
在js文件里引入其他js文件
2012-02-02 21:10 1216第一个js文件(被引入的js文件),文件名one.js,内容如 ... -
● JS中的window.setTimeout()详解
2012-02-01 15:48 1201setTimeout (表达式,延时时间)setInter ... -
转Ext性能优化
2011-12-29 15:41 940前一阶段由于页面上 ... -
解决ext下拉列表全选和去全选功能
2011-12-29 12:50 1261最近在做ext的项目,需求要求处理下拉列表要有全选和去全选的功 ... -
转—Sybase数据库简介
2011-07-27 14:37 775一、Sybase数据库简介 1 ... -
在当前页面直接加载当前月份
2010-11-30 16:31 8441。 js window.onload = function ... -
报表使用
2010-08-06 11:04 1048目的:实现从前端到后台及生成报表的整个流程。 1.jsp页面 ... -
下载服务器上的文件-纯java处理
2010-07-06 19:05 18787public void download(HttpServle ... -
如何清jboss缓存
2010-07-06 18:50 3902要清除Jboss下的缓存,只要清除以下文件的所有文件就可以了: ... -
Java集合类
2010-05-30 14:34 815集合类说明及区别Colle ... -
string对象
2010-05-25 22:01 795/** * @author fxliu * @vers ...
相关推荐
这个"Java 11 压缩包版 - jdk11.0.12"包含了Java Development Kit的最新稳定版本,允许开发者在Windows操作系统上搭建Java开发环境。下面将详细介绍如何安装、配置以及使用Java 11,同时也会涉及一些相关的重要知识...
在Java编程环境中,处理RAR压缩包并对其进行解压是一个常见的任务,特别是在自动化脚本或数据迁移等场景下。本文将详细介绍如何使用Java实现这个功能,特别是处理带密码保护的RAR文件,同时支持中文文件名,并能在...
文章中提到,作者在项目中遇到了生成的压缩包文件(可能是通过tar或gzip命令创建的)在Linux下显示中文文件名时出现乱码的问题。他们发现,Windows系统默认使用GBK编码,而Linux默认使用UTF-8编码,因此在处理文件名...
在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...
在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...
对于Linux用户来说,Java 11的Linux版本是必不可少的,因为Linux是许多服务器和开发环境的首选操作系统。Linux有多种发行版,如Ubuntu、CentOS、Fedora、Debian等,而Java 11的Linux安装包通常可以跨多个发行版通用...
在Linux环境下,使用Java的...总的来说,解决JFreeChart在Linux下的中文乱码问题需要结合系统环境、JFreeChart的API使用以及适当的编码设置。通过正确地配置和使用支持中文的字体,可以确保生成的图表文本清晰易读。
这个文件可以用来解决JFreeChart在Linux下显示中文乱码的问题。 解决步骤如下: 1. **安装字体**:首先,你需要将“simsun.ttc”字体文件安装到你的Linux系统中。这通常涉及到将字体文件复制到系统的字体目录...
"java7_64_AIX.rar"这个压缩包包含了适用于AIX系统的IBM JDK 1.7的64位版本,这在市面上可能并不常见,因此对于需要在AIX环境下运行Java 7应用程序的开发者来说尤为珍贵。 首先,我们需要了解IBM JDK 1.7在AIX系统...
在AIX环境下,使用JDK1.8 64位,开发者可以编写符合Java 8规范的代码,利用新的语言特性,如lambda表达式、方法引用、Stream API等。同时,由于是64位版本,它能够支持更大的内存分配,适合处理大数据和复杂的多线程...
Java提取压缩包中的文件,文件操作的范畴,操作对象为ZIP格式的压缩文件,将从ZIP中提取出BMP图像文件,要将从压缩包中提取文件,必须先解压压缩包,然后将指定文件拷贝出来,代码中先实现了对zip文件的解压,然后...
Linux版本的Java 8针对Linux平台进行了优化,确保在该操作系统上的性能和稳定性。 在Linux上安装Java 8 JDK(Java Development Kit 8)是开发者和系统管理员必须掌握的一项技能。首先,你需要访问Oracle官网下载...
Linux版本的JDK 11是为Linux操作系统设计的,确保了Java程序在Linux环境下的兼容性和高效运行。 **下载与安装** 1. **下载**: 首先,你需要从Oracle官方网站或者第三方可靠的源下载JDK 11的Linux压缩包。在本例中...
在Linux环境下,Java开发者经常需要处理与GDAL(Geospatial Data Abstraction Library)相关的项目。GDAL是一个开源的地理空间数据处理库,它提供了多种数据格式的读写能力,并支持空间几何操作和坐标系统转换。这个...
这个压缩包简化了Java开发环境的安装过程,用户可以直接下载并解压,然后在系统环境变量中进行配置,以确保系统能够找到Java的执行路径。这对于初学者和专业开发者来说都是一个方便的步骤,避免了在线安装过程中可能...
在Java编程环境中,我们可以利用各种库来实现在Linux系统中将Word文档转换为PDF。这个过程通常涉及到对文件格式的理解,以及对操作系统调用的掌握。以下是一个详细的知识点介绍: 1. **Java与Linux交互**: Java...
标题中的“javacv-1.1-linux”指的是这个压缩包包含了JavaCV 1.1版本在Linux操作系统下的所有相关jar包,包括适用于32位和64位系统的版本。 1. JavaCV简介: JavaCV是一个开源项目,旨在简化Java开发者在计算机...
在Java编程环境中,处理文件的压缩与解压缩是常见的任务,而涉及到安全性,加密和解密就显得尤为重要。本文将详细讲解如何使用Java实现ZIP压缩包的加密与解密。 首先,我们需要理解加密的基本概念。加密是将明文...
标题中的“jfreechart在LINUX下乱码问题的解决”指的是在Linux操作系统中使用JFreeChart库时遇到的字符编码问题。JFreeChart是一个Java库,用于创建各种图表,如饼图、柱状图、线图等。在处理中文字符时,如果系统...
在Linux平台上安装Java和Tomcat,首先需要确保系统具有足够的权限,然后通过wget或curl命令下载所需文件。对于Java,可以使用tar命令解压,并将解压后的目录添加到系统的PATH环境变量中。对于Tomcat,同样解压后,...