java常用功能
1.复制文件
private void fileChannelCopy(File source, File target) throws IOException {
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
fi = new FileInputStream(source);
fo = new FileOutputStream(target);
in = fi.getChannel();
out = fo.getChannel();
in.transferTo(, in.size(), out);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
LOGGER.error("File copy failed.", e);
}
}
}
2. restApi 显示图片
@GET
@Path("/")
@Produces("image/*")public StreamingOutput getImage(final @QueryParam("path") String path) throws IOException { LOGGER.debug("source:" + path); return new StreamingOutput() { @Override
public void write(OutputStream output) throws IOException,
WebApplicationException {
try (
InputStream in = storage.getDocument(path)) {
output.write(IOUtils.readBytesFromStream(in));
} catch (final FileNotFoundException ex) {
LOGGER.error("file is not founded.", ex);
throw new NotFoundException();
} }
};
}
public class StorageUtil {
private final File folder = new File("/macc/img");
public StorageUtil() throws IOException {
if (!folder.exists() && !folder.mkdirs()) {
throw new IOException("Unable to initialize FS storage:" + folder.getAbsolutePath());
}
if (!folder.isDirectory() || !folder.canWrite() || !folder.canRead()) {
throw new IOException("Unable to access FS storage:" + folder.getAbsolutePath());
}
}
public void addDocument(final String name, final byte[] content) throws IOException {
try (InputStream in = new ByteArrayInputStream(content)) {
addDocument(name, in);
}
}
public void addDocument(final String name, final InputStream in) throws IOException {
final File f = new File(folder, name);
if (f.exists() && !f.delete()) {
throw new IOException("Unable to delete FS file:" + f.getAbsolutePath());
}
try (OutputStream out = new BufferedOutputStream(new FileOutputStream(f))) {
out.write(IOUtils.readBytesFromStream(in));
f.deleteOnExit();
}
}
public InputStream getDocument(final String name) throws IOException {
String path = folder + "/" + name;
final File f = new File(path);
if (!f.exists() || !f.isFile()) {
throw new FileNotFoundException("Unable to access FS file:" + f.getAbsolutePath());
}
return new FileInputStream(f);
}
public void deleteAll() throws IOException {
for (final File f: folder.listFiles()) {
if (!f.delete()) {
throw new IOException("Unable to delete FS file:" + f.getAbsolutePath());
}
}
}
}
3.上传图片-表单模式
@POST
@Consumes("multipart/form-data")
@Path("/upload")
public Response uploadFileByForm(@Context
HttpServletRequest imgRequest,
@Multipart(value="name",type="text/plain")String name,
@Multipart(value="file")Attachment image) { DataHandler dh = image.getDataHandler(); try {
InputStream ins = dh.getInputStream();
writeToFile(ins, "/macc/img/" + dh.getName());
} catch (Exception e) {
LOGGER.error("upload failed.", e);
} return Response.ok().entity("ok").build();
}
4.图片上传-二进制流模式
@POST
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
@ModuleSecurityAuth(moduleId=ModuleId.PLAN ,privilegeOperation=PrivilegeOperation.WRITE)
@Path("/uploadstream")
public UploadFileRsp uploadFile(@Context
HttpServletRequest imgRequest) {
UploadFileRsp response =new UploadFileRsp();
try {
InputStream ins = imgRequest.getInputStream();
Integer groupId = Integer.parseInt(imgRequest.getParameter("group_id"));
String name = imgRequest.getParameter("name");
BufferedImage bi =ImageIO.read(ins);
int height = bi.getHeight();
int width = bi.getWidth();
String storeName = getStoreName(groupId);
String path = tenantId() + "/" + storeName;
File out = new File(PLAN_PICTURE_PATH + path); //没有文件夹则创建
if(!out.getParentFile().exists())
out.getParentFile().mkdirs(); ImageIO.write(bi, getSuffix(name), out);
pictureService.bindPicture2Floor(path, name, tenantId(), userId(), groupId, width, height);
response.setHeight(height);
response.setPath(path);
response.setWidth(width);
} catch (Exception e) {
LOGGER.error("upload failed.", e);
response.buildCode(RestCode.PICTURE_UPLOAD_ERROR);
} return response;
}
java常用功能的更多相关文章
- JAVA基础语法:常用功能符以及循环结构和分支结构(转载)
3.JAVA基础语法:常用功能符以及循环结构和分支结构 1.常用功能符 注释 ("文字"是被注释的部分) //文字 单行注释 /文字/ 多行注释 算术运算符 + - * / / 整 ...
- java常用英文解释
java常用名词解释: OO: object-oriented ,面向对象 OOP:object-oriented programming,面向对象编程 Author:JCC Object:对象JDK ...
- JavaScript 常用功能总结
小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...
- Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库1.1. 5种常用的Photoshop滤镜,分别针对照片的曝光.风格色调.黑白照片处理.锐利度.降噪这五大 ...
- JAVA常用的XML解析方法
转并总结自(java xml) JAVA常用的解析xml的方法有四种,分别是DOM,JAX,JDOM,DOM4j xml文件 <?xml version="1.0" enco ...
- java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...
- Java常用jar包用途
Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM ...
- Android 虚拟机Dalvik、Android各种java包功能、Android相关文件类型、应用程序结构分析、ADB
Android虚拟机Dalvik Dalvik冲击 随着Google 的AndroidSDK 的发布,关于它的API 以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举.不过,其中的一个话题在J ...
- java 常用的包 默认导入的包
1.java.lang----包含一些Java语言的核心类,如String.Math.Integer.System和Thread,提供常用功能. 2.java.awt----包含了构成抽象窗口工具集( ...
随机推荐
- Protocol Buffers java
Protocol Buffers https://developers.google.cn/protocol-buffers/ 一. 例 addressbook.proto. syntax = &qu ...
- gradle项目,连同依赖一起打jar包
在build里加入以下配置(如果不是一个可执行的jar包的话就不用配置Main-Class属性): def mainClassName = "你需要执行的main方法所在的的包名+类名&qu ...
- calloc(), malloc(), realloc(), free(),alloca()
内存区域可以分为栈.堆.静态存储区和常量存储区,局部变量,函数形参,临时变量都是在栈上获得内存的,它们获取的方式都是由编译器自动执行的. 利用指针,我们可以像汇编语言一样处理内存地址,C 标准函数库提 ...
- 关于nagios系统下使用shell脚本自定义监控插件的编写
在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios ...
- 【CF653G】Move by Prime 组合数
[CF653G]Move by Prime 题意:给你一个长度为n的数列$a_i$,你可以进行任意次操作:将其中一个数乘上或者除以一个质数.使得最终所有数相同,并使得操作数尽可能小.现在我们想要知道$ ...
- android 关于view的onTouch和onClick同时触发解决方案
extends:http://blog.sina.com.cn/s/blog_aa0bd5950101gbwt.html 做了一个悬浮窗,需要处理onTouch和onClick事件, 1 定义一个bo ...
- CmD空格转义的三种方法,总有一种会解决问题
CmD空格转义 在cmd中,如果路径中存在空格报错 可以有三种解决方法: 1.将存在空格的路径用双引号包起来,如:"D:/Program Files/xx"; 2.将存在空格的名称 ...
- Python面向对象之字段
类成员: 字段,方法,属性 属性是在一个函数方法前面加一个装饰器,伪造成为一个字段,调用的时候不需要加括号() 目的是把一个方法伪造成为一个字段,属性也是方法的一种,对这个方法进行改造就可以以 字段的 ...
- POJ-2081 Terrible Sets(暴力,单调栈)
Terrible Sets Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4113 Accepted: 2122 Descrip ...
- poj3261 Milk Patterns【后缀数组】【二分】
Farmer John has noticed that the quality of milk given by his cows varies from day to day. On furthe ...