InputStream in = new FileInputStream(file);
/**
* @Author: zcm
* @DateTime: 2021/10/12 下午3:15
* @Params: [org.springframework.web.multipart.MultipartFile]
* @Return java.io.File
* @Description: 将 MultipartFile对象 转换为 File 对象
*/
public static File multipartFileToFile(MultipartFile file) throws IOException {
File toFile = null;
if (file.equals("") || file.getSize() <= 0) {
file = null;
} else {
InputStream ins = null;
ins = file.getInputStream();
toFile = new File(file.getOriginalFilename());
inputStreamToFile(ins, toFile);
ins.close();
}
return toFile;
}
/**
* @Author: zcm
* @DateTime: 2021/10/12 下午3:00
* @Params: [java.io.InputStream, java.io.File]
* @Return void
* @Description: 获取流文件
*/
private static void inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import java.io.*; import java.nio.file.Files; import java.util.LinkedList; import java.util.Queue;
/**
* @Author: zcm
* @DateTime: 2021/10/12 下午3:01
* @Params: [java.io.File]
* @Return org.springframework.web.multipart.MultipartFile
* @Description: 将File对象 转为 MultipartFile。
* 转换出来后,注意对比一下,原生的MultipartFile 与 转换出来的 MultipartFile 的
* 各个属性,因为计算文件幻数的时候,用的是MultipartFile。
* MultipartFile不止一个实现类,File对象转MultipartFile时,注意看调试时 MultipartFile的实现类
*/
public static MultipartFile fileToMultipartFile(File file) {
FileItem fileItem = createFileItem(file);
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
return multipartFile;
}
/**
* @Author: zcm
* @DateTime: 2021/10/12 下午3:12
* @Params: [java.io.File]
* @Return java.lang.String
* @Description: 获取 MultipartFile 对象的 ContentType属性
* 就是文件内容的类型
*/
public static String getContentType(File file) {
String s = null;
try {
s = Files.probeContentType(file.toPath());
} catch (IOException e) {
e.printStackTrace();
}
return s;
}
/**
* @Author: zcm
* @DateTime: 2021/10/12 下午3:14
* @Params: [java.io.File]
* @Return org.apache.commons.fileupload.FileItem
* @Description: 生成 new CommonsMultipartFile(fileItem) 的 FileItem
*/
private static FileItem createFileItem(File file) {
FileItemFactory factory = new DiskFileItemFactory(10240, null);
String contentType = FileUtils.getContentType(file);
FileItem item = factory.createItem("file", contentType, true, file.getName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
try {
FileInputStream fis = new FileInputStream(file);
OutputStream os = item.getOutputStream();
while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
/**
* @Author: zcm
* @DateTime: 2021/10/11 下午8:09
* @Params: [java.io.File, int]
* @Return void
* @Description: 计算文件夹的最大深度,如果超过 maximumOfFileTreeDepth 层,就抛出异常
*/
private static int maximumOfFileTreeDepth = 5;
public static void checkFileTreeDepth(File file, int depth){
File[] files = file.listFiles();
for(int i = 0; i < files.length; i++){
File f = files[i];
if (f.isDirectory()){
depth++;
if (depth < FileUtils.maximumOfFileTreeDepth){
checkFileTreeDepth(f, depth);
}else{
throw new RuntimeException("文件层数太深了!");
}
depth--;
}
}
return ;
}
/**
* @Author: zcm
* @DateTime: 2021/10/11 下午8:14
* @Params: [java.lang.String]
* @Return void
* @Description: 递归删除这个路径下的所有文件对象
*/
public static void deleteAllFile(String path){
File all = new File(path); //获取其file对象
File[] fs = all.listFiles(); //遍历path下的文件和目录,放在File数组中
for(File f:fs){ //遍历File[]数组
if(!f.isDirectory()){
f.delete();
}else {
deleteAllFile(f.getAbsolutePath());
}
}
all.delete();
}
文章浏览阅读202次。packagecode;//importjava.awt.*;//importjava.awt.Canvas;//importjava.awt.event.*;//importjavax.swing.*;importjava.util.Random;importjavax.microedition.lcdui.*;//写界面所需要的包/***//***俄罗斯方块*高雷*2007年1..._240×320java游戏
文章浏览阅读779次,点赞14次,收藏19次。然后,实现系统的数据管理和服务功能,包括用户的注册与登录、电影的分类与展示、电影信息的查询与推荐、座位的选择与预订、在线支付与电子票生成等。此外,随着在线视频平台的兴起,越来越多的人选择在线观看电影,这对传统电影院产生了巨大的冲击。研究意义: 开发在线电影院售票平台对于提升用户的观影体验、优化电影院的运营效率、促进电影产业的发展具有重要的意义。该系统旨在通过技术手段解决传统电影院售票中的问题,提供一个集成化的电影信息展示、座位选择、在线支付和用户评价平台,同时也为电影院和电影制作方提供有效的工具。
文章浏览阅读509次。保护我们剩下的人的通话信息安全,使用TOX可以让你在和家人,朋友,爱人交流时保护你的隐私不受政府无孔不入的的偷窥.关于TOX:其他牛逼的软件因为一些细化服务问你要钱的时候, TOX分文不取 . 你用了TOX, 想干嘛就干嘛.网友评论:项目源码展示:源码测试效果:最后,如果你学C/C++编程有什么不懂的,可以来问问我哦,或许我能够..._基于c++的即时聊天系统设计
文章浏览阅读584次。鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)当Java服务在Linux系统中运行时,可能会出现swap分区被占用的内存泄露问题,导致系统性能下降或者崩溃。下面是该问题的故障及解决方法、底层结构、架构图、工作原理、使用场景详解和实际应用方式、原理详细描述、相关命令使用示例以及文献材料链接。_linux swap占用很高
文章浏览阅读662次。Alt+F11,然后插入-模块:复制下面代码到编辑窗口:Sub 半角标点符号转换为全角标点符号()'中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant Dim MyRange..._替换半角宏
文章浏览阅读2.8k次。#.简介: WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。WebView内部的WebSetting对象负责管理WebView的参数配置; WebViewClient负责处理WebView的各种请求和通知事件,在对应事件发生时会执行WebViewClient的对应回调; ChromeWebviewClient辅助Webview处理与JS一些交互......_android webview真正加载完成
文章浏览阅读1.6k次。_bitcoin 调试环境搭建
文章浏览阅读4.3k次,点赞93次,收藏94次。为了解决贝塞尔曲线无法局部修正、控制性减弱、曲线次数过高、不易拼接的缺陷,引入B样条曲线(B-Spline)。本文介绍B样条曲线的基本概念:节点向量、支撑性、次数阶数、加权性质、节点生成算法等,为后续曲线计算打下基础。_样条曲线生成
文章浏览阅读902次。配置本地repo库下载我的阿里云盘文件文件放置#创建目录mkdir -p /opt/cloudera/parcel-repo/mkdir -p /opt/cloudera/cm/yum install createrepoCDH 6.2.0 的三个文件放到/opt/cloudera/parcel-repo/中,并且注意把sha256后缀的文件名修改为sha#执行createrepo命令生成rpm元数据 最终/opt/cloudera/parcel-repo/会多一个repodata目录_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line 76: /usr/java/jdk1.8.0_181
文章浏览阅读943次,点赞2次,收藏2次。uni.canvasToTempFilePath_uni.canvastotempfilepath
文章浏览阅读3.1k次。SRAM :静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。DRAM:动态RAM,需要刷新,容量大。SDRAM:同步动态RAM,需要刷新,速度较快,容量大。DDR SDRAM:双通道同步动态RAM,需要刷新,速度快,容量大。........................_sdram 干扰
文章浏览阅读7.3k次。假设表格有A、B、C、D四列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3、col4。_excel数据怎么生成sql语句