时间:2014-11-17 来源:

java中的File文件读写操作 【编程语言】

之前有好几次碰到文件操作方面的问题承接网站前端,大都因为时间太赶而没有好好花时间去仔细的研究研究,承接网站前端每次都是在百度或者博客或者论坛里面参照着大牛们写的步骤照搬过来,html切图报价之后再次碰到又忘记了团队网页接活,刚好今天比较清闲,团队网页接活于是就在网上找了找Java常用的file文件操作方面的资料.之后加以一番整理,手机网页制作现分享给大家.

直接上源码吧.

原文出处:http://www.open-open.com/lib/view/open1415448427183.html

这就是上面的程序运行的结果网页切图制作,上面说到第三种方式是直接面向内存的,网页切图制作效率是最快的div+css+js切图,可是我们发现第三种的运行结果却还没有第二种方式快,网页重构报价具体的原因我还没有进行深入探究承接网站前端,而且我的文件容量也比较小,承接网站前端看不出什么本质的效果psd切图html,而且这个也仅仅是读取操作,psd切图html但最后的那个文件复制操作效果就相当明显了web外包,不仅仅是读取操作,div切图排版同时还涉及到了文件的写操作网页切图制作,普通的复制方式需要105毫秒,网页切图制作而采用内存映射的方式仅仅只需要1毫秒div+css+js切图,效果立马明晓了.

至于读操作的效率问题有兴趣的朋友可以去深入探究一番.

前面三种方法是关于文件的读取操作,div+css+js切图第一种和第二种是比较常见的普通方式承接网站前端,第三种则是采用内存映射的模式,页面div重构这种模式是直接操作内存psd切图html,效率是最快的,psd切图html后面两种是关于文件的读取和写入操作.

package com.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; /** * file operate * @author ruanpeng * @time 2014-11-11上午9:14:29 */ public class OperateFileDemo { private DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS"); private Date start_time = null;//开始时间 private Date end_time = null;//结束时间 public static void main(String[] args) { OperateFileDemo demo = new OperateFileDemo(); demo.operateFile1(); demo.operateFile2(); demo.operateFile3(); demo.fileCopy1(); demo.fileCopy2(); } /** * the first method of reading file */ public void operateFile1(){ start_time = new Date(); File f = new File("E:"+File.separator+"test.txt");//File.separator——windows is '\',unix is '/' try { //创建一个流对象 InputStream in = new FileInputStream(f); //读取数据,手机网页制作并将读取的数据存储到数组中 byte[] b = new byte[(int) f.length()];//数据存储的数组 int len = 0; int temp = 0; while((temp = in.read()) != -1){//循环读取数据网页切图制作, 0, "GBK")); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ end_time = new Date(); System.out.println("==============第一种方式——start_time:"+df.format(start_time)); System.out.println("==============第一种方式——end_time:"+df.format(end_time)); System.out.println("==============第一种方式总耗时:"+(end_time.getTime() - start_time.getTime())+"毫秒"); } } /** * the second method of reading file */ public void operateFile2(){ start_time = new Date(); File f = new File("E:"+File.separator+"test.txt"); try { InputStream in = new FileInputStream(f); byte[] b = new byte[1024]; int len = 0; while((len = in.read(b)) != -1){ System.out.println(new String(b, len, "GBK")); } in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ end_time = new Date(); System.out.println("==================第二种方式——start_time:"+df.format(start_time)); System.out.println("==================第二种方式——end_time:"+df.format(end_time)); System.out.println("==================第二种方式总耗时:"+(end_time.getTime() - start_time.getTime())+"毫秒"); } } /** * the third method of reading file(文件读取(Memory mapping-内存映射方式)) * 这种方式的效率是最好的,承接网页制作速度也是最快的web外包,因为程序直接操作的是内存 */ public void operateFile3(){ start_time = new Date(); File f = new File("E:"+File.separator+"test.txt"); try { FileInputStream in = new FileInputStream(f); FileChannel chan = in.getChannel();//内存与磁盘文件的通道,手机网页制作获取通道网页切图制作, 0,0,"GBK")); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ end_time = new Date(); System.out.println("======================第三种方式——start_time:"+df.format(start_time)); System.out.println("======================第三种方式——end_time:"+df.format(end_time)); System.out.println("======================第三种方式总耗时:"+(end_time.getTime() - start_time.getTime())+"毫秒"); } } /** * the first method of copying file */ public void fileCopy1(){ start_time = new Date(); File f = new File("E:"+File.separator+"test.txt"); try { InputStream in = new FileInputStream(f); OutputStream out = new FileOutputStream("F:"+File.separator+"test.txt"); int len = 0; while((len = in.read()) != -1){ out.write(len); } out.close(); in.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ end_time = new Date(); System.out.println("======================第一种文件复制方式——start_time:"+df.format(start_time)); System.out.println("======================第一种文件复制方式——end_time:"+df.format(end_time)); System.out.println("======================第一种文件复制方式总耗时:"+(end_time.getTime() - start_time.getTime())+"毫秒"); } } /** * 使用内存映射实现文件复制操作 */ public void fileCopy2(){ start_time = new Date(); File f = new File("E:"+File.separator+"test.txt"); try { FileInputStream in = new FileInputStream(f); FileOutputStream out = new FileOutputStream("F:"+File.separator+"test2.txt"); FileChannel inChan = in.getChannel(); FileChannel outChan = out.getChannel(); //开辟缓冲区 ByteBuffer buf = ByteBuffer.allocate(1024); while ((inChan.read(buf)) != -1){ //重设缓冲区 buf.flip(); //输出缓冲区 outChan.write(buf); //清空缓冲区 buf.clear(); } inChan.close(); outChan.close(); in.close(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ end_time = new Date(); System.out.println("======================第二种文件复制方式——start_time:"+df.format(start_time)); System.out.println("======================第二种文件复制方式——end_time:"+df.format(end_time)); System.out.println("======================第二种文件复制方式总耗时:"+(end_time.getTime() - start_time.getTime())+"毫秒"); } } } 说明:

点击次数:6625
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日HDU-5211-Mutiple(BestCoder+以后做题还是用c++吧.......) 【编程语言】2015年05月11日常用的JavaScript代码(二) 【综合】2015年02月15日Linux(Ubuntu12.04)安装nginx 【编程语言】2015年07月22日Ajax实例 【移动开发】2015年07月03日POJ1321棋盘问题深搜+回溯 【编程语言】2015年03月26日中移动推免费短信:亡羊补牢难回黄金时代【架构设计】2014年11月06日angular学习(三):ng渲染案例用法总结【移动开发】2014年11月20日算法导论--动态规划(装配线调度) 【数据库】2015年06月03日Java类库与用户互动 【架构设计】2015年03月02日UVA-1153KeeptheCustomerSatisfied【系统运维】2015年07月17日ASPAJAX静态分页2014年01月29日asp中日期时间函数介绍2014年01月29日Oracle一个用户如何访问其它用户的表应用指南2014年01月30日C语言中的函数指针 【编程语言】2015年08月24日UVA11181-Probability|Given(概率)【移动开发】2014年11月17日LeetCode48189RotateImageRotateArray 【综合】2015年04月09日【WebView学习之五】:调试WebApps 【Web前端】2014年11月06日ApacheHelix简介 【架构设计】2015年08月14日java面向对象——类 【编程语言】2015年05月05日phpGD图像处理中文乱码的问题【综合】2014年12月16日12.如何自学Struts2发送邮件和验证补充【视频】 【编程语言】2015年03月17日摩托罗拉官方支持Android4.0的设备清单 ,,2016年06月23日判断一个数是否为平方数 【移动开发】2014年12月25日GoogleIO2012终极十大预测 ,,2016年07月24日android添加随意拖动的桌面悬浮窗口2014年01月30日Tomcat部署Web应用方面的一些问题(多Tomcat、指定Java、字节码替换) 【编程语言】2015年06月03日JS网页图片查看器(兼容IE、FF)可控制图片放大缩小移动2014年01月29日Objective-C奇巧淫技--delegate挂钩 【编程语言】2015年03月16日自定义View之绘制交替进度条 【移动开发】2014年11月06日4Sum 【移动开发】2015年02月09日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)