java读取1g超大图片_java读取大文件1G+ | 学步园
正常读取大文件,可能会想到用缓存
如:
package base;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
public class ReadBigFile {
public static void readBigFile(String path) {
BigInteger sum;
try {
File file = new File(path);
BufferedInputStream fis = new BufferedInputStream(
new FileInputStream(file));
BufferedReader reader = new BufferedReader(new InputStreamReader(
fis, "utf-8"), 5 * 1024 * 1024);// 用5M的缓冲读取文本文件
String line = "";
sum = BigInteger.ZERO;
while ((line = reader.readLine()) != null) {
sum = sum.add(BigInteger.ONE);
}
System.out.println(sum);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) {
readBigFile("H:/TDDOWNLOAD/TEST.txt");
}
}
但是为了统计等,更加有效率,采用流的方式
public class ReadBigFile2 {
// 统计指定文件中的字符的总数,其中:fileName指的是文件的全路径
public static long xermote(String fileName) {
FileReader reader = null;
try {
reader = new FileReader(fileName);
// 创建分析给定字符流的标记生成器
StreamTokenizer stn = new StreamTokenizer(
new BufferedReader(reader));// 根据给定的字符流创建标记生成器stn
// 下面指定单引号、双引号和注释的转义字符在此标记生成器中是普通字符,不代表其他的特殊的含义
stn.ordinaryChar('\'');
stn.ordinaryChar('\"');
stn.ordinaryChar('/');
// 创建可以统计字符总数的各个变量
String str;
int num_sum = 0;// 用于统计数字字符总数的变量
int word_sum = 0;// 用于统计字母、汉字等字符总数的变量
int sym_sum = 0;// 用行统计标点符号等字符总数的变量
int sum = 0;// 用于计算全部种类字符总数的变量
// 当生成器的下一个标记不是流末尾的常量
while (stn.nextToken() != StreamTokenizer.TT_EOF) {
switch (stn.ttype) {// 来判断当前获取的流的标记类型
// TT_EOL指示已读到行末尾的常量。
case StreamTokenizer.TT_EOL:
break;
// TT_NUMBER指示已读到一个数字标记的常量
case StreamTokenizer.TT_NUMBER:
str = String.valueOf((stn.nval));// stn.nval表示此数字标记的值
num_sum += str.length();
break;
// TT_WORD指示已读到一个文字标记的常量
case StreamTokenizer.TT_WORD:
// str = stn.sval;// stn.sval表示此文字标记的值
str = "\\x01\\x02";
word_sum += str.length();
break;
default:
// 如果以上3中类型都不是,则为英文的标点符号
str = String.valueOf((char) stn.ttype);
sym_sum += str.length();
}
}
System.out.println("数字标记的和为:" + num_sum);
System.out.println("文字标记的和为: " + word_sum);
System.out.println("标点符号标记的和为: " + sym_sum);
sum = sym_sum + num_sum + word_sum;
System.out.println("此文件中的字符总数为: " + sum);
return sum;
} catch (Exception e) {
e.printStackTrace();
return -1;
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
public static void main(String[] args) {
String fileName = "H:/TDDOWNLOAD/迅雷相关/迅雷网邻/P2P Seacher/movie/test.txt";
System.out.println("统计文件" + fileName + "中的字符数的结果如下:");
ReadBigFile2.xermote(fileName);
}
}
java读取1g超大图片_java读取大文件1G+ | 学步园相关推荐
- java读取pdf三维图片_java 读取PDF文件生成图片形式
引入所需maven依赖 org.icepdf.os icepdf-core 6.2.2 javax.media jai_core JAVA代码工具类package com.util; import c ...
- java运行速度慢的原因_java运行速度慢的原因 | 学步园
1)java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节,执行相应操作.而C++编译的时候将程序编译成本地机器码.一般来说java程序执行速度 ...
- java中间常用的类_Java实现的中间库 | 学步园
数据库与数据库之间的数据交互 1. 背景 中间库主要用于解决一个大系统多个数据库,其中多个数据库作用是:用于备份数据或者用于存储业务数据等:中间库还可以用于解决两个系统间的接口问题,2个系统共同操作这 ...
- java oracle 图片_JAVA读取Oracle中的blob图片字段并显示
JAVA读取Oracle中的blob图片字段并显示 近期,在给客户做一个Demo页面时,需要用JAVA读取Oracle中的blob图片字段并显示,在此过程中,遇到一些问题,例如:连接Oracle数据库 ...
- java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...
java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223 答案:4 mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...
- java下mysql连接配置文件_Java读取.properties配置文件并连接数据库
1.读取配置文件 //Properties集合 流对象读取键值对 public static void getNum() throws Exception { Properties p=new Pro ...
- php读取文件和读取redis,PHP结合redis实现大文件去重
本篇文章主要内容是用PHP多个进程配合redis的有序集合实现大文件去重,感兴趣的朋友可以学习一下. 1.对一个大文件比如我的文件为 -rw-r--r-- 1 ubuntu ubuntu 9.1G M ...
- java实现对大文件切割下载_Java实现大文件的切割与合并操作示例
Java实现大文件的切割与合并操作示例 发布时间:2020-09-27 02:25:08 来源:脚本之家 阅读:99 作者:HiBoyljw 本文实例讲述了Java实现大文件的切割与合并操作.分享给大 ...
- java用mysql存储图片_Java存储图片到Mysql
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [1]视图层 action="${ctx}/web/UserInforServlet?method=userInforServlet" ...
最新文章
- Linux下PS1设置
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- ·记2014.5.16的一件小事
- POI异步导入Excel兼容xsl和xlsx
- 九度OnlineJudge之1004:Median
- app vue 真机运行_uni-app黑魔法:小程序自定义组件运行到H5平台
- 数据结构基础(17) --二叉查找树的设计与实现
- Python天气查询系统(连接数据库版)
- 网页可以播放RTMP视频流?支持RTMP的网页播放器
- 注意!黑客可以通过CSS3功能攻击浏览器
- 不一样的90后创业者:创业是另一种生活方式
- Flink sql 写ddl连接kafka
- [ XJTUSE ]JAVA语言基础知识——7.11 JTree、TreeModel实现树
- Box Cox Transformation
- 奇数位升序偶数位降序链表排序
- 【软考总结】不负韶光--I eat konwledge like air.
- 2021-4-19单片机原理及应用作业
- 网络io和磁盘io_在磁盘IO上,第1部分:IO的风味
- web前端开发论文写作_现在入行 web前端开发 晚了?不看数据你根本不知道这些...
- iview button根据条件 disabled可用或者不可用