//获取图片大小
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读取图片的更多相关文章

  1. java IO流读取图片供前台显示

    最近项目中需要用到IO流来读取图片以提供前台页面展示,由于以前一直是用url路径的方式进行图片展示,一听说要项目要用IO流读取图片感觉好复杂一样,但任务下达下来了,做为程序员只有选择去执行喽,于是找了 ...

  2. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...

  3. Java IO 流总结篇

    1. 写在前面的话 I/O ,I 是 Input (输入)的缩写,O是Output (输出) 的缩写,众所周知,人与人之间想要沟通交流,就需要讲彼此都能听懂的语言,比如大家都统一说英语. 人类如果想和 ...

  4. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  6. Java IO流系统整理

    Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流.输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位二 ...

  7. Java IO流详尽解析

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. JAVA.IO流学习笔记

    一.java.io 的描述 通过数据流.序列化和文件系统提供系统输入和输出.IO流用来处理设备之间的数据传输 二.流 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数 ...

  9. 【转载】JAVA IO 流的总结

    来自http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html,写的很详细 Java流操作有关的类或接口: Java流类图结构: 流的概念和 ...

随机推荐

  1. awk 命令使用入门

    Linux 下处理和分析文本文件内容,AWK 命令是一个强有力的工具.特别是文件内容是以行和列的形式排版的时候,AWK 就是命令行界的 Excel 啊! 简单的 awk 命令可以直接在命令行中使用,复 ...

  2. codeforce 796C - Bank Hacking(无根树+思维)

    题目 Although Inzane successfully found his beloved bone, Zane, his owner, has yet to return. To searc ...

  3. 6.30集训模拟赛4(炸裂的一天qwq)

    T1浇水: 题目描述 在一条长n米,宽m米米的长方形草地上放置着k个喷水装置.假设长方形草地的坐标范围为[ 0 , 0 ] ~ [ n , m ],那么第 i 个喷水装置的位置为(ai,m/2),也就 ...

  4. 洛谷 P2296 【寻找道路】

    这道题真的很女少啊 言归正传: 这道题其实就是考验的思路,读题后,我们发现对于某个点他所连接的点必须连接终点,那么我们直接反向存图,从终点进行bfs,可以找到未连接的点,然后对这些点所连接的点进行标记 ...

  5. hive如何获取当前时间

    在大多数的sql中获取当前时间都是用now()函数即可,hive获取当前时间的函数与sql 不一样 在impala中执行now()函数时是可以通过的 然而在hive中执行now()函数却报错: hiv ...

  6. idea 链接 Tomcat 出现的错误 Application server libraries not found

    红色字体是重点 好久好久没有上来了.一直忙于工作没事有时间进行总结. 最近在家隔离期间发现了一个好玩的游戏率土之滨  , 玩的不错和大盟主混的很好.在给盟里做考勤任务的时候发现很麻烦还需要用Excel ...

  7. 大场前端工程师常使用CSS3特性做跨域也是牛逼前端的开始之路

    通过 CSS3 的 content 获取内容,很有意思的一个思路,实际场景中有可能用的到: CSST (CSS Text Transformation) 利用js动态创建一个link插入到文档中, 请 ...

  8. CF819B Mister B and PR Shifts 思维题

    分析 这道题\(n\leq10^{6}\),显然\(n^{2}\)的暴力是无法解决问题的 那么我们可以考虑数列的某一种性质 因为最终的答案是\(\sum{n \atop i=1} |p_i - i|\ ...

  9. Java基础笔记05-06-07-08

    五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...

  10. day51 表格与表单

    目录 一.表格标签 二.表单标签 1 form内最重要的就是input标签,它通过type变形 2 select标签 3 textarea标签 4 重点 三.通过flask实现表单提交 四.css 1 ...