利用IO流一次性读取文件中的所有内容

读取文件效率最快的方法就是一次全读进来,使用readline()之类的方法,可能需要反复访问文件,而且每次readline()都会调用编码转换,降低了速度,所以,在已知编码的情况下,按字节流方式先将文件都读入内存,再一次性编码转换是最快的方式,代码如下:

try {File f = ResourceUtils.getFile(AndroidConst.JSON_FILE_PATH+AndroidConst.JSON_FILE_NAME);if(!f.exists()) {return Result.returnErrorResult("file "+AndroidConst.JSON_FILE_NAME+" not found ."); }Long filelength = f.length();  byte[] filecontent = new byte[filelength.intValue()];  FileInputStream in = new FileInputStream(f);  in.read(filecontent);  in.close();  String content=new String(filecontent);JSON json = JSONObject.parseObject(content, JSON.class);System.out.println(content); return Result.returnResult(json);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return Result.returnResult("error !");

将读取的文件内容直接转换成 json返回


利用IO流下载文件

同样是使用一次性全部读取的方式,将文件全部读取,并且放入缓存中,然后在写入response中直接返回

package com.huali.business.util;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import javax.servlet.http.HttpServletResponse;public class DownloadUtil {public static HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件的路径。File file = new File(path);// 取得文件名。String filename = file.getName();// 取得文件的后缀名。String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();// 以流的形式下载文件。InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer = new byte[fis.available()];fis.read(buffer);fis.close();// 清空responseresponse.reset();// 设置response的Headerresponse.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));response.addHeader("Content-Length", "" + file.length());OutputStream toClient = new BufferedOutputStream(response.getOutputStream());response.setContentType("application/octet-stream");toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException ex) {ex.printStackTrace();}return response;}}

以上是一个工具类,通过response=DownloadUtil.download(AndroidConst.APK_FILE_PATH+fileName, response);直接调用即可!

利用IO流一次性读取文件中的所有内容,利用IO流下载文件相关推荐

  1. Python把PDF文件中每页内容分离为独立图片文件

    封面图片:<Python程序设计实验指导书>(ISBN:9787302525790),董付国,清华大学出版社 图书详情(京东): ============== 问题描述:把PDF文件转换为 ...

  2. 在java中读取某个文件中的数据内容

    代码 import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java ...

  3. 将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中

    package again;import java.io.*;/* 1.编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中,a.txt 文件中的单词 ...

  4. QFile修改替换文件中特定的内容

    前言 一开始在做linux下的qt相关开发时,经常重复着灵活快速的修改文件中的某个内容,所以特此记录,下次直接复制粘贴代码. 思路是,先读取文件中的内容存在QString中,然后提取出我们要修改的那一 ...

  5. php遍历文本文档txt文件中的链接内容为数组

    1 <?php 2 3 $file = fopen("1.txt", "r"); 4 $user=array(); 5 $i=0; 6 //输出文本中所有 ...

  6. 200826-C语言打印文件中的文本内容

    1. Description 在桌面上创建一个txt文件,输入一些文本内容,我们的任务是把文本内容打印出来. 在编程之前,关于一些函数的定义我们需要了解下. fopen fopen的函数原型为: FI ...

  7. 根据条件从txt文件中挑出一些文字并据此修改文件名字

    根据条件从txt文件中挑出一些文字并据此修改文件名字 /* ****************************************************** *学习Windows API编 ...

  8. linux文件删除指定内容,Linux bash删除文件中含“指定内容”的行功能示例

    本文实例讲述了Linux bash删除文件中含"指定内容"的行功能.分享给大家供大家参考,具体如下: #!/bin/sh # 功能: 删除文件中含"指定内容"的 ...

  9. 【Linux】41. grep结合awk -F 获取文件中的关键内容

    ip addr |grep inet |awk -F ' ' '{print $2}' 上面这句话就是:找出ip addr命令输出的内容中包含inet的所有行,并把这些行中用空格' '分隔的内容输出, ...

最新文章

  1. saiku 3.8 二次开发代码整理步骤(20160727更新)
  2. python 操作pdf
  3. Bayesian Neural Network for regression (PRML)
  4. 989-数组形式的整数加法
  5. ERP技术的新方向——智能客户端
  6. 快速pow和sqrt的小技巧 hdu4282
  7. 昇腾AI处理器软件栈--运行管理器(Runtime)
  8. POJ 2492 A Bug's Life (带权并查集 向量偏移)
  9. Oracle - 导入异常ORA-01659和11G在Exp时空表不能导出
  10. Android基础控件EditText
  11. 软件架构--《企业IT架构转型之道》笔记
  12. 彩灯控制器课程设计vhdl_EDA课程设计彩灯控制器
  13. c语言 步进电机 程序,步进电机加速启动C语言程序
  14. 计算机开机跳过硬盘检查,怎样取消电脑开机磁盘自检 关闭硬盘自检方法全析...
  15. 关于自编码器的核心点理解
  16. html页面 添加搜索关键词,如何为自己的网站添加关键字与描述详解
  17. UOS 安装腾讯会议的踩坑记录
  18. js-拖拽-div跟随鼠标的拖拽而移动
  19. 1024程序员节,带你解锁过节新方式
  20. 尼龙毛柱分离T细胞法操作指南

热门文章

  1. 小米的开源监控系统open-falcon架构设计,看完明白如何设计一个好的系统
  2. 带你了解CANN的目标检测与识别一站式方案
  3. ubuntu安装后的个人简单配置
  4. C语言编程>第十周 ⑧ 请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。
  5. 视觉画面风格种类有哪些呢?
  6. CORS 完全手册之 CORS 详解
  7. Arduino UNO R3上的AREF和IOREF管脚
  8. ubuntu下解决“无法获得锁 ”的方法
  9. 华为鸿蒙经济新闻,华为鸿蒙生态加速 市场相关板块再度活跃
  10. javascript存储对象