java io流根据url读取图片
//获取图片大小
public void readFileSize(String url,HttpServletRequest request){
//根路径
File file = new File(request.getRealPath("/")+url);
InputStream is = null;
FileImageOutputStream imageOutput=null;
//按图片名截取
String fileName=file.getName();
//按后缀截取
String prefix=fileName.substring(fileName.lastIndexOf(".")+1);
try {
is = new BufferedInputStream(new FileInputStream(file));
int i=is.available()/1024;
if (i>30.4) {
// app.base.data_excel 存图片的路径
File imagePath = new File(Config.getKey("app.base.data_excel")+"picdatafor1/");
if (!imagePath.exists()) {
imagePath.mkdir();
}
byte[] getData = readInputStream(request.getRealPath("/")+url);
imageOutput = new FileImageOutputStream(new File(Config.getKey("app.base.data_excel")+"picdatafor1/"+fileName));
imageOutput.write(getData, 0, getData.length);
imageOutput.flush();
imageOutput.close();
}else if(i<=30.4 && "png".equals(prefix)){
FileWriter fw = new FileWriter(new File(Config.getKey("app.base.data_excel")+"pic.txt"),true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(fileName);
bw.newLine();
bw.flush();
bw.close();
fw.close();
// 输出图片路径
byte[] getData = readInputStream(request.getRealPath("/")+url);
File imagePath = new File(Config.getKey("app.base.data_excel")+"picdatafor0/");
if (!imagePath.exists()) {
imagePath.mkdir();
}
imageOutput = new FileImageOutputStream(new File(Config.getKey("app.base.data_excel")+"picdatafor0/"+fileName),t);
imageOutput.write(getData, 0, getData.length);
imageOutput.flush();
imageOutput.close();
}else {
byte[] getData = readInputStream(request.getRealPath("/")+url);
File imagePath = new File(Config.getKey("app.base.data_excel")+"picdatafor2/");
if (!imagePath.exists()) {
imagePath.mkdir();
}
imageOutput = new FileImageOutputStream(new File(Config.getKey("app.base.data_excel")+"picdatafor2/"+fileName));
imageOutput.write(getData, 0, getData.length);
imageOutput.flush();
imageOutput.close();
}
} catch (FileNotFoundException e) {
// System.out.println("url不存在");
} catch (IOException e) {
e.printStackTrace();
}
finally{
if (is != null) {
try {
is.close(); // 关闭流
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
// 根据url读取文件
public static byte[] readInputStream(String url) throws IOException {
byte[] data = null;
FileImageInputStream input = new FileImageInputStream(new File(url));
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[1024*1024];
int numBytesRead = 0;
while ((numBytesRead = input.read(buf)) != -1) {
output.write(buf, 0, numBytesRead);
}
data = output.toByteArray();
output.close();
input.close();
return data;
}
java io流根据url读取图片的更多相关文章
- java IO流读取图片供前台显示
最近项目中需要用到IO流来读取图片以提供前台页面展示,由于以前一直是用url路径的方式进行图片展示,一听说要项目要用IO流读取图片感觉好复杂一样,但任务下达下来了,做为程序员只有选择去执行喽,于是找了 ...
- java io流(字符流) 文件打开、读取文件、关闭文件
java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...
- Java IO 流总结篇
1. 写在前面的话 I/O ,I 是 Input (输入)的缩写,O是Output (输出) 的缩写,众所周知,人与人之间想要沟通交流,就需要讲彼此都能听懂的语言,比如大家都统一说英语. 人类如果想和 ...
- java IO流详解
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- Java IO流系统整理
Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流.输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位二 ...
- Java IO流详尽解析
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- JAVA.IO流学习笔记
一.java.io 的描述 通过数据流.序列化和文件系统提供系统输入和输出.IO流用来处理设备之间的数据传输 二.流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数 ...
- 【转载】JAVA IO 流的总结
来自http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html,写的很详细 Java流操作有关的类或接口: Java流类图结构: 流的概念和 ...
随机推荐
- vue指令,实例成员,父子组件传参
v-once指令 """ v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) """ <di ...
- 《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》 论文解读
论文链接:https://arxiv.org/abs/1811.05320 最近发现博客好像会被CSDN和一些奇怪的野鸡网站爬下来?看见有人跟爬虫机器人单方面讨论问题我也蛮无奈的.总之原作者Misso ...
- 阿里巴巴开源canal 工具数据同步异常CanalParseException:parse row data failed,column size is not match for table......
一.异常现象截图 二.解决方式: 1.背景 早期的canal版本(<=1.0.24),在处理表结构的DDL变更时采用了一种简单的策略,在内存里维护了一个当前数据库内表结构的镜像(通过desc ...
- 每天一个Linux命令(mkdir)
每天一个Linux命令(mkdir) mkdir: /bin/mkdir,创建目录( make directories)语法:mkdir [选项]... 不存在的目录...目录:默认时必须该目录不存在 ...
- Flutter —快速开发的IDE快捷方式
老孟导读:这是老孟翻译的精品文章,文章所有权归原作者所有. 欢迎加入老孟Flutter交流群,每周翻译2-3篇付费文章,精彩不容错过. 原文地址:https://medium.com/flutter- ...
- Conda太慢?试试这个加速工具!
1 简介 Conda作为使用最为广泛的数据科学环境管理工具,可以协助我们很方便的完成创建管理环境.下载安装第三方库.软件包等操作,但其在下载资源的过程中下载速度时常令人捉急,即使使用连接速度更快的国内 ...
- 常见Python的Web开发框架
在今天,Python里有很多开发框架用来帮助你轻松创建web应用.web开发框架存在的意义就在于可以快速便捷的构建应用,而不用去在意那些没必要的技术细节(协议.报文.数据结构). 到2020年为止,基 ...
- appium-1-安装
1.appium安装 网盘地址,下载之后,一路点就可以了 链接:https://pan.baidu.com/s/1-X_ceUWisbuyosjztakKZw 密码:hxeu 系统变量中新增APPI ...
- .Net Core微服务入门全纪录(八)——Docker Compose与容器网络
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 前言 上一篇[.Net Core微服务入门全纪录(七)--IdentityServer4-授权认证]中使用IdentityServer4 ...
- 从零开始使用 Webpack 搭建 Vue3 开发环境
从零开始使用 Webpack 搭建 Vue3 开发环境 创建项目 首先需要创建一个空目录,在该目录打开命令行,执行 npm init 命令创建一个项目,这个过程会提示输入一些内容,完成后会自动生成一个 ...