- 浏览: 65176 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
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 2957线上的tomcat 无法启 ... -
codis实现高可用的服务端架构
2016-01-11 11:03 0codis实现高可用的服务端架构 安装codis 用lv ... -
netty入门
2014-03-14 18:14 18711 阻塞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 13551) 下载CentOS6,mysql5.5.30 源码包, ... -
Protocol Buffers的应用与分析将数据存储在Hbase中
2013-02-04 15:24 0ddd -
hbase整合hadoop,并在Window环境下连接hbase
2012-11-26 22:33 2952环境:redhat9 ,hadoop-1.0.4,hbase- ... -
hadoop中的问题总结
2012-11-18 22:39 1699在做hadoop例子中,Win7远程连接linux服务器上的h ... -
jconsole在windows和linux版本下的使用
2013-04-02 17:10 4148在WINDWO7 平台下使用jconsole: jcons ... -
JDK自带VM分析工具jps,jstat,jmap,jconsole
2012-10-22 22:03 0一、概述 Sun 的JDK中的几个工具,非 ... -
精通java正则表达式
2012-10-16 22:41 2234精通java正则表达式 1.正则表达式的作用 ... -
[转载]VMWARE 虚拟机连接主机,或被其他网内的机器访问
2012-04-12 12:24 2559原文:http://blog.sina.com.cn/s/bl ... -
JVM内存设置(转)
2012-02-07 09:23 1959对于jvm的设置我一直知道的很少,有时候遇到outOfM ...
相关推荐
本文通过分析提供的代码片段,详细介绍了如何实现一个C语言程序来统计C文件中的总行数、空行数、有效行数及注释行数。通过对各个部分的详细解释,不仅帮助读者理解了整个程序的工作原理,还提供了一些具体的实现思路...
### Java从读取本地文件的指定行数 ...通过上述步骤,我们可以有效地实现从Java中读取本地文件的指定行数的需求。这种能力对于处理大量文本数据非常有用,特别是在分析日志文件或处理文本数据时。
6. **返回结果**:最后,工具类应提供一个方法,返回统计到的总行数、代码行数和注释行数。 以下是一个简单的示例代码片段,展示了如何开始这个过程: ```java import java.io.*; public class CodeCounter { ...
在Java中,读取文件是一项基本且重要的操作,它可以通过多种方式实现,如字节流、字符流和基于行的读取。下面将详细介绍这些方法: #### 字节级读取:`readFileByBytes()` 此方法采用字节流的方式读取文件,适用于...
在处理大数据时,一个大型CSV文件可能会变得难以管理,这时就需要将它拆分成多个小文件。本教程将详细解释如何通过特定工具或编程方式实现CSV表格的拆分。 ### CSV文件的特点 1. **易读性**:由于CSV是纯文本格式,...
这段代码每次读取一个字节,并将其写入控制台,直到文件结束(返回值为-1)。 2. **按字符读取文件内容** 当处理包含文本数据的文件时,通常使用`java.io.InputStreamReader`和`java.io.Reader`类按字符读取。...
在C#编程中,计算一个TXT文件的行数是一项常见的任务,特别是在处理大量文本数据时。这个任务可以通过读取文件并逐行处理来实现。以下是一个详细的步骤和知识点讲解: 1. **文件流(FileStream)**:在C#中,我们...
如果文件内容较多,使用缓冲可以显著提高读取速度,因为数据会一次性读入内存,而不是每次读取一个字符。 除了`BufferedReader`,还有其他方式可以按顺序读取文件,比如使用`Scanner`类。`Scanner`提供了更丰富的...
在C#编程环境中,计算一个TXT文件的行数是一项常见的任务,特别是在处理大量文本数据时。这个过程涉及到读取文件内容并逐行处理。以下是一个详细的步骤解释和示例代码,帮助你理解如何实现这个功能。 1. **打开文件...
由于我们不知道具体行的长度,可以先设定一个合理的缓冲区大小,如果读取的内容中包含行结束符,则表示已经读取完一行。 5. **处理读取内容**: 将读取到的字符串进行处理,去除行结束符,然后返回给调用者。 6. ...
总结,这个"fastreport打印固定行数报表实例"是一个实际操作示例,演示了如何在Delphi 7环境中利用FastReport创建并打印具有固定行数的报表,这对于财务报告和其他需要规范化数据展示的应用场景非常有价值。通过学习...
例如,我们可能希望从一个表中读取从第三条记录开始的若干条数据。这种需求常见于分页显示、数据分批处理等场景。本文将详细介绍如何通过SQL语句实现这一功能。 #### 一、基本概念 在开始之前,我们需要了解几个...
标题中的“14-Java操作Linux命令分割合并文本文件1”指的是使用Java编程语言来执行Linux命令,以实现对文本文件的分割和合并操作。在处理大文件时,由于内存限制,不能一次性将整个文件读入,因此需要采用分块处理的...
# 6.2创建界面控件:5个单选按钮,4个标签和单行编辑框,1个执行按钮 # 6.3单选按钮和执行链接对应函数 关于功能5修改编码格式——写该功能主要因为,经常遇到一些文本文件由于编码格式不一致的问题,导致无法用写...
### Java NIO 处理超大数据文件的知识点详解 ...综上所述,使用Java NIO处理超大数据文件时,关键是利用好内存映射文件技术和合理的数据读取策略,通过适当的分块和数据解析方法,可以有效地提升读取速度和处理能力。
Java读取大文件的处理是Java编程中的一项重要技术,特别是在处理大文件时需要注意性能和响应速度。下面我们将对Java读取大文件的处理技术进行详细的介绍。 标题解释 Java读取大文件的处理是指使用Java语言来读取大...
一个完整的Shapefile由多个文件组成,包括.shp、.shx和.dbf等。其中,.shp文件存储几何信息,而.dbf文件则存储属性信息。本文将基于提供的代码片段,详细介绍如何使用Java语言来读取Shapefile文件中的几何信息以及...
在提供的压缩包中,有一个名为"ucanaccess-2.0.9.2.jar"的文件,这是UCanAccess驱动,它是一个开源的Java库,允许Java应用程序直接操作.MDB和.ACCDB格式的Access数据库,而无需安装任何Microsoft软件。要使用这个...
标题 "Python实现Java代码行数读取及单元测试" 提示了我们主要涉及两个技术领域:Python编程和Java代码分析。这个项目的核心是利用Python来读取和分析Java源代码,计算其中的代码行数,同时对这个过程进行单元测试以...
在Java编程环境中,读取PDF文件中的内容是一个常见的任务,特别是在处理文档自动化或者数据分析时。PDF(Portable Document Format)是一种跨平台的文件格式,用于精确地保留文档的格式和内容。下面将详细介绍如何...