- 浏览: 65316 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
zuo_huai:
赞一个!!!
java多线程编程 -
zuo_huai:
呵呵……,不客气
使用common-fileupload 和common-io实现文件的上传和批量上传 -
lg_asus:
呵呵,不错的东东。多谢
使用common-fileupload 和common-io实现文件的上传和批量上传
1 ) java实现文件的按照每次读取固定行数读取一个文件
/** * * @param fileRowCount 文件的总行数 * @param firstReadRowNum 第一次读取文件的行数 * @param lastReadRowNum 下一次要读取文件的行数 * @param fileName 文件的名称 */ public void readFile(int fileRowCount, int firstReadRowNum, String fileName) { // readFileName LineNumberReader lineReader = null ; try { lastReadRowNum = firstReadRowNum; while (lastReadRowNum < fileRowCount) { if (Common.dataList.size() >= listSize) { logger.info("队列超过最大值:" + Common.dataList.size()); try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } else { lastReadRowNum = firstReadRowNum + readRowCount; if (lastReadRowNum > fileRowCount) { lastReadRowNum = fileRowCount; } // fileContent = sendMand(firstReadRowNum, lastReadRowNum, // lastReadRowNum, fileName); String dataStr = null ; //需要处理的字符串 StringBuffer rtnBuf = new StringBuffer(); int lineNum =0 ; int count = 0 ; String path=""; path = Common.homePath+File.separator+fileName; File file = new File(path); logger.info("构建文件对象成功,文件对象名是:"+path); lineReader = new LineNumberReader(new FileReader(file)); logger.info("开始从定位到到需要读取的起始行是:"+firstReadRowNum); while((dataStr=lineReader.readLine())!=null){ lineNum = lineReader.getLineNumber() ; /** * 在起始行号和最后行号之间 */ if(lineNum >=firstReadRowNum && lineNum<lastReadRowNum ){ if(lineNum == firstReadRowNum ){ logger.info("定位到需要读取的行号是:"+firstReadRowNum+",读取到的行号是:"+lastReadRowNum); } rtnBuf.append(dataStr+"\n"); } if(lineNum==lastReadRowNum) { count++ ; logger.info("循环读取文件:"+count+"次,每次读取"+readRowCount+"行成功,起始行数是:"+firstReadRowNum+"终止行数是:"+lastReadRowNum); fileContent=rtnBuf.toString() ; dbTelnetFile = new DbTelnetFile(); dbTelnetFile.setSFileName(readFileName); dbTelnetFile.setEmsName(emsName); dbTelnetFile.setILastLine(lastReadRowNum); dbTelnetFile.setStartRow(firstReadRowNum); dbTelnetFile.setEndRow(lastReadRowNum); dbTelnetFile.setContent(fileContent); /** * 检查队列的大小是否已经超过最大值 */ while(Common.dataList.size() >= listSize) { logger.info("队列超过最大值:" + Common.dataList.size()); try { Thread.currentThread().sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } // 放入到队列中………… Common.dataList.offer(dbTelnetFile); // Common.dataList.add(dbTelnetFile); logger.info("将对象TelnetFile成功放入到队列中,iLastLine:"+dbTelnetFile.getILastLine()+","); firstReadRowNum = lastReadRowNum; lastReadRowNum = firstReadRowNum + readRowCount; if (lastReadRowNum > fileRowCount) { lastReadRowNum = fileRowCount; } /** * 用最后一次读取的值,构建StringBuffer对象 */ rtnBuf = new StringBuffer(dataStr+"\n"); dbTelnetFile = null ; } } } } logger.info("读取文件" + readFileName + "成功"); } catch (Exception e) { e.printStackTrace() ; logger.error("读取文件错误"+e.getMessage()); }finally{ /** * 关闭文件流对象 */ if(lineReader !=null){ try { lineReader.close() ; } catch (IOException e) { e.printStackTrace(); } } } }
2)java实现计算文件总行数(计算一个9百万行的文件需要的时间效率大约是13S)
/** *通过java 程序获取文件的行数 * @return */ public int getFileRowCountBy(String fileName){ logger.info("统计文件行数开始:") ; long temp = +System.currentTimeMillis() ; int num = 0; LineNumberReader lineReader = null ; try{ String path=""; path = Common.homePath+File.separator+fileName; File file = new File(path); logger.info("构建文件对象成功,文件对象名是:"+path); lineReader = new LineNumberReader(new FileReader(file)); while((lineReader.readLine())!=null){ num++ ; } logger.info("统计文件行数结束,用的时间是:"+(System.currentTimeMillis()-temp)/1000+"s") ; logger.info("文件的一共有: "+num+" 行"); }catch(Exception e){ logger.error("获取文件总行数异常:"+e.getMessage()); e.printStackTrace() ; }finally{ if(lineReader != null){ try{ lineReader.close() ; }catch(Exception e){ logger.error("关闭文件异常"); e.printStackTrace() ; } } } return num ; }
3) 通过LINUX 命令读取固定行数文件内容,由java调用
public String sendMand(int beginRow,int endRow,int readRowCount,String fileName) throws Exception{ if(beginRow ==0){ beginRow =1 ; } String returnResult = "" ; String cmd = "sed -n '"+beginRow+","+endRow+"p;"+endRow+"q' "+fileName; logger.info("需要发送:"+cmd+"开始"); telnetManager.sendCommandAutoLine(cmd) ; returnResult = telnetManager.waitForStringReturn(telnetManager.getOsTag2(), 20000); logger.info("成功发送:"+cmd+"命令"); logger.info(returnResult); return returnResult ; }
4)通过LINUX 命令计算文件总行数,由java调用
/** * 通过linux 命令获取文件行数 * @param fileName * @return */ public String getFileRowCount(String fileName) { String fileRowCountStr=""; String sub="" ; try{ String cmdValue = "cat "+fileName+" | wc -l" ; telnetManager.sendCommandAutoLine(cmdValue); fileRowCountStr = telnetManager.waitForStringReturn(telnetManager.getOsTag2(), 20000); int index1 = fileRowCountStr.indexOf("\r\n"); int index2 = fileRowCountStr.lastIndexOf("\r\n"); if(index1 !=-1&& index2 !=-1){ sub = fileRowCountStr.substring(index1, index2) ; if(sub != null &&!"".equals(sub)){ sub = sub.replaceAll("\r\n",""); } if("".equals(sub)){ sub = fileRowCountStr.substring(0, index2) ; } } else { index1 = fileRowCountStr.indexOf("\n"); index2 = fileRowCountStr.lastIndexOf("\n"); if(index1 != -1&& index2 != -1){ sub = fileRowCountStr.substring(index1, index2) ; sub = sub.replaceAll("\n",""); } if("".equals(sub)){ sub = fileRowCountStr.substring(0, index2) ; } } }catch(Exception e){ } fileRowCountStr = sub.trim(); return fileRowCountStr; }
发表评论
-
java7-(fork-join) 的使用
2016-06-29 14:17 0public class ForkJoinTest { ... -
tomcat无法启动的问题 -Xss太小
2016-06-23 16:40 2962线上的tomcat 无法启 ... -
codis实现高可用的服务端架构
2016-01-11 11:03 0codis实现高可用的服务端架构 安装codis 用lv ... -
netty入门
2014-03-14 18:14 18751 阻塞IO ,阻塞异步IO,非阻塞异步IO 首先学习n ... -
SVN权限管理
2013-09-14 10:37 01.安装subversion 2.安装TortoiseS ... -
HIVE知识点
2013-08-21 20:35 0安装hive: 1.创建目录 ... -
HQL
2013-08-21 11:07 0select site, fr, count(sid) as ... -
vi 命令整理
2013-06-20 22:57 0vi 的工作模式 Vi 在初 ... -
Linxu shell 编程
2013-06-04 14:14 0ubuntu在进行算数运算时提示Syntax err ... -
Hbase微博系统
2013-05-02 11:38 0HBase是一个分布式的、面向列的开源数据库 HB ... -
由Word Count 得到的HDFS、map reducde
2013-05-02 10:57 0HDFS 设计目标: 大文件 一次写入,多次读取 普 ... -
新手在Centos 6 下mysql5.5.30下源码安装
2013-03-30 09:55 13561) 下载CentOS6,mysql5.5.30 源码包, ... -
Protocol Buffers的应用与分析将数据存储在Hbase中
2013-02-04 15:24 0ddd -
hbase整合hadoop,并在Window环境下连接hbase
2012-11-26 22:33 2960环境:redhat9 ,hadoop-1.0.4,hbase- ... -
hadoop中的问题总结
2012-11-18 22:39 1710在做hadoop例子中,Win7远程连接linux服务器上的h ... -
jconsole在windows和linux版本下的使用
2013-04-02 17:10 4164在WINDWO7 平台下使用jconsole: jcons ... -
JDK自带VM分析工具jps,jstat,jmap,jconsole
2012-10-22 22:03 0一、概述 Sun 的JDK中的几个工具,非 ... -
精通java正则表达式
2012-10-16 22:41 2247精通java正则表达式 1.正则表达式的作用 ... -
[转载]VMWARE 虚拟机连接主机,或被其他网内的机器访问
2012-04-12 12:24 2568原文:http://blog.sina.com.cn/s/bl ... -
JVM内存设置(转)
2012-02-07 09:23 1964对于jvm的设置我一直知道的很少,有时候遇到outOfM ...
相关推荐
本文通过分析提供的代码片段,详细介绍了如何实现一个C语言程序来统计C文件中的总行数、空行数、有效行数及注释行数。通过对各个部分的详细解释,不仅帮助读者理解了整个程序的工作原理,还提供了一些具体的实现思路...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
JAVA实现远程文件读取 JAVA是一种广泛应用于软件开发的编程语言,随着网络技术的发展,JAVA也提供了许多支持...JAVA实现远程文件读取技术可以广泛应用于各种文件共享和文件传输场景,提高了文件处理的效率和灵活性。
6. **返回结果**:最后,工具类应提供一个方法,返回统计到的总行数、代码行数和注释行数。 以下是一个简单的示例代码片段,展示了如何开始这个过程: ```java import java.io.*; public class CodeCounter { ...
在Java中,读取文件是一项基本且重要的操作,它可以通过多种方式实现,如字节流、字符流和基于行的读取。下面将详细介绍这些方法: #### 字节级读取:`readFileByBytes()` 此方法采用字节流的方式读取文件,适用于...
对于支持Lua代码行数的计算,这可能是通过识别文件扩展名为.lua或者内部解析Lua语法来实现的。 在进行代码行数统计时,通常会区分注释行、空行和有效代码行。有效代码行指的是实际执行的语句,不包括注释和空白。...
如果文件内容较多,使用缓冲可以显著提高读取速度,因为数据会一次性读入内存,而不是每次读取一个字符。 除了`BufferedReader`,还有其他方式可以按顺序读取文件,比如使用`Scanner`类。`Scanner`提供了更丰富的...
在C#编程环境中,计算一个TXT文件的行数是一项常见的任务,特别是在处理大量文本数据时。这个过程涉及到读取文件内容并逐行处理。以下是一个详细的步骤解释和示例代码,帮助你理解如何实现这个功能。 1. **打开文件...
由于我们不知道具体行的长度,可以先设定一个合理的缓冲区大小,如果读取的内容中包含行结束符,则表示已经读取完一行。 5. **处理读取内容**: 将读取到的字符串进行处理,去除行结束符,然后返回给调用者。 6. ...
总结,这个"fastreport打印固定行数报表实例"是一个实际操作示例,演示了如何在Delphi 7环境中利用FastReport创建并打印具有固定行数的报表,这对于财务报告和其他需要规范化数据展示的应用场景非常有价值。通过学习...
例如,我们可能希望从一个表中读取从第三条记录开始的若干条数据。这种需求常见于分页显示、数据分批处理等场景。本文将详细介绍如何通过SQL语句实现这一功能。 #### 一、基本概念 在开始之前,我们需要了解几个...
在Java编程环境中,读取FTP(File Transfer Protocol)服务器上的文件是一项常见的任务,尤其是在Web服务器和Linux系统环境下。FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器...
标题中的“14-Java操作Linux命令分割合并文本文件1”指的是使用Java编程语言来执行Linux命令,以实现对文本文件的分割和合并操作。在处理大文件时,由于内存限制,不能一次性将整个文件读入,因此需要采用分块处理的...
# 6.2创建界面控件:5个单选按钮,4个标签和单行编辑框,1个执行按钮 # 6.3单选按钮和执行链接对应函数 关于功能5修改编码格式——写该功能主要因为,经常遇到一些文本文件由于编码格式不一致的问题,导致无法用写...
### Java NIO 处理超大数据文件的知识点详解 ...综上所述,使用Java NIO处理超大数据文件时,关键是利用好内存映射文件技术和合理的数据读取策略,通过适当的分块和数据解析方法,可以有效地提升读取速度和处理能力。
Java读取大文件的处理是Java编程中的一项重要技术,特别是在处理大文件时需要注意性能和响应速度。下面我们将对Java读取大文件的处理技术进行详细的介绍。 标题解释 Java读取大文件的处理是指使用Java语言来读取大...
为了高效地处理这类问题,我们可以利用Java的`java.nio`包中的BufferedReader和FileChannel等类,实现按行读取大文件,并将其内容解析后存储到数据库中。本文将详细讲解这一过程。 首先,我们需要了解`java.nio`包...
一个完整的Shapefile由多个文件组成,包括.shp、.shx和.dbf等。其中,.shp文件存储几何信息,而.dbf文件则存储属性信息。本文将基于提供的代码片段,详细介绍如何使用Java语言来读取Shapefile文件中的几何信息以及...
在提供的压缩包中,有一个名为"ucanaccess-2.0.9.2.jar"的文件,这是UCanAccess驱动,它是一个开源的Java库,允许Java应用程序直接操作.MDB和.ACCDB格式的Access数据库,而无需安装任何Microsoft软件。要使用这个...
Java实现按行分割大文件是指将一个大的文本文件按行分割成几个小文件的过程。这个过程可以使用Java语言来实现,本文将详细介绍Java实现按行分割大文件的方法。 知识点1: Java中读取大文件的方法 Java中有多种方法...