主要用于java中上传时对文件大小的处理,往数据库中存的时候比较方便、取的时候也有处理,还有基础的加减乘除:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* getSize(String str)---是将初始大小转化为常见单位
* getRealNum(String str)---是将常见单位转换为初始大小(默认单位为B)
* plus(String str1,String str2)--是将常见单位相加(str1 + str2)
* subtract(String str1,String str2)--是将常见单位相减(str1 - str2)
* multiply(String str1,String str2)--是将常见单位相乘(str1 * str2)
* divide(String str1,String str2)--是将常见单位相除(str1 / str2)
* @author lyf
* @parameter string
*/
public class FileSizeUtil{
/**
* 加法
* @param str1
* @param str2
* @return str1+str2
*/
public static String plus(String str1,String str2){
long numa = getRealNum(str1);
long numb = getRealNum(str2);
return getSize(numa + numb);
}
/**
* 减法
* @param str1
* @param str2
* @return str1-str2
*/
public static String subtract(String str1,String str2){
long numa = getRealNum(str1);
long numb = getRealNum(str2);
return getSize(numa - numb);
}
/**
* 乘法
* @param str1
* @param str2
* @return str1*str2
*/
public static String multiply(String str1,String str2){
long numa = getRealNum(str1);
long numb = getRealNum(str2);
return getSize(numa * numb);
}
/**
* 除法
* @param str1
* @param str2
* @return str1/str2
*/
public static String divide(String str1,String str2){
long numa = getRealNum(str1);
long numb = getRealNum(str2);
return getSize(numa / numb);
}
//获取数
private static String getNums(String str){
String num = null;
List<String> list = getList(str);
for(int i = 0;i < list.size();i++){
String a = list.get(i);
if(isNumber(a)){
num = a;
}
}
return num;
}
// 获取单位
private static String getUnits(String str){
String unit = null;
List<String> list = getList(str);
for(int i = 0;i < list.size();i++){
String a = list.get(i);
if(isLetter(a)){
unit = a;
}
}
return unit;
}
/**
* 转换常见单位为初始大小
* @param num
* @param unit
* @return realNum
*/
public static Long getRealNum(String str){
String unit = getUnits(str);
String num = getNums(str);
long realNum = 0;
Long[] nums = {getNum(0),getNum(1),getNum(2),getNum(3),getNum(4)};
String[] units = {"B","KB","MB","GB","TB"};
for(int k = 0;k < units.length;k++){
if(unit.toUpperCase().equals(units[k])){
long n = (long)Integer.parseInt(num);
realNum = n * nums[k];
}
}
return realNum;
}
// 1024的n次方
private static Long getNum(int n){
return (long)Math.pow(1024, n);
}
//分离英语和数字
private static List<String> getList(String str){
List<String> list = new ArrayList<String>();
String s = "\\d+.\\d|\\w+";
Pattern pattern = Pattern.compile(s);
Matcher ma = pattern.matcher(str);
while(ma.find()){
list.add(ma.group());
}
return list;
}
//判断是否是数字
private static boolean isNumber(String str){
return isTrue("\\d+",str);
}
//判断是否是字母
private static boolean isLetter(String str){
return isTrue("\\w+",str);
}
//判断--传入正则表达式
private static boolean isTrue(String reg,String str){
Pattern pattern = Pattern.compile(reg);
Matcher ma = pattern.matcher(str);
while(ma.find()){
return true;
}
return false;
}
/**
* 转换初始大小为常见单位
* @param size
* @return
*/
public static String getSize(long size){
final long unit = 1024;
java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");
String[] units = {"B","KB","MB","GB","TB"};
for(int i = 0;i < units.length;i++){
double d = getNumSize(size,i);
if(d < unit){
return df.format(d) + units[i];
}
}
return null;
}
//单位换算
private static double getNumSize(long size,int n){
double d = size / Math.pow(1024, n);
return d;
}
//test
public static void main(String[] args){
System.out.println(isNumber("123"));
System.out.println(isLetter("aa"));
System.out.println("转换为初始大小:" + getRealNum("234MB"));
System.out.println("两字符串单位相加:" + plus("123MB","1024KB"));
System.out.println("小写字母的字符串相加:" + plus("123mb","1024kb"));
}
}
分享到:
相关推荐
在Java端,我们需要创建一个处理文件上传的服务器端接口。这通常涉及到Servlet或Spring MVC中的控制器方法。当文件上传请求到达服务器时,这些方法会接收文件流,保存到服务器的磁盘上,或者将其存储到数据库或云...
"性能最好的Java文件上传组件"是指一种优化了上传速度和资源消耗的工具,它能够有效地处理大文件上传、多文件并发上传等问题,提高应用的用户体验。在这个场景中,我们提到了基于"COS"的Java文件上传组件。COS通常指...
在Java编程语言中,文件上传是一项常见的功能...以上就是基于Java的文件上传涉及的主要技术点,涵盖了从客户端请求到服务器处理的整个流程。通过理解并熟练掌握这些知识点,开发者能够创建出高效、安全的文件上传功能。
在这个场景下,"文件上传下载需要的jar包"指的是用于处理文件上传和下载操作的Java类库。下面将详细介绍相关的知识点。 1. **Apache Commons FileUpload**: 这是一个非常流行的Java库,用于处理HTTP请求中的多部分...
在Java编程语言中,文件上传是一项常见的...总的来说,"java文件上传组件包"提供了一系列工具和方法,帮助开发者高效、安全地处理文件上传任务。通过理解并熟练运用这些知识点,你可以构建出稳定可靠的文件上传系统。
总结来说,Java文件上传AR包涉及到使用Servlet API、Apache Commons FileUpload和IO库来处理多部分请求,解析上传的文件,存储到服务器,并确保整个过程的安全性和性能。在实际开发中,这些知识点是构建高效、安全...
3. `Java服务端代码`:处理文件上传的Servlet或Controller,负责接收请求、解析文件并保存到服务器。 4. `CSS样式文件`:定义了上传界面的样式,使界面更加美观。 5. `HTML模板`:可能包含了SWF和EXT的初始化代码,...
本示例("java文件上传dome")聚焦于使用Tomcat中的Servlet和Apache Commons FileUpload库来实现这一功能。以下是这个示例中涉及的关键知识点: 1. **Servlet**: Servlet是Java EE中用于扩展服务器功能的Java类。...
在Java开发中,多文件上传是一项常见的功能,尤其在Web应用中,用户可能需要一次性上传多个文件,如图片、文档等。本知识点将详细介绍如何在Java中实现这一功能,以及结合Flash实现上传界面并显示上传进度条。 1. *...
这两个库提供了强大的文件操作和文件上传功能,是Java开发者处理文件上传问题的得力助手。 首先,`commons-io-2.5.jar`是Apache Commons IO库的一部分,这是一个用于处理输入/输出操作的Java库。它提供了许多实用...
总的来说,这个源码包提供了从客户端文件选择、HTTP上传、服务器端接收、文件保存到服务器的完整流程,是学习和理解Java文件上传功能的好例子。通过深入研究和实践,开发者可以掌握文件上传这一核心的Web开发技能。
在Java中,`Commons-FileUpload`库是一个常用的处理文件上传的工具包,它提供了方便的API来解析`multipart/form-data`请求。在Servlet中,我们需要解析`HttpServletRequest`对象,获取到上传文件的信息,如文件名、...
在Java Spring框架中,文件上传是一项常见的功能,用于接收用户通过Web界面提交的文件。Spring提供了强大的MultipartFile接口,使得处理文件上传变得简单且高效。本文将深入探讨如何使用Java和Spring实现文件上传,...
在Java编程中,文件上传是一项常见的任务,尤其在开发Web应用程序...通过这个简单的Java文件上传例子,开发者可以学习如何在实际项目中实现文件上传功能,并理解相关的技术细节。这有助于提升Web应用的交互性和功能性。
这个“java文件上传代码upload”项目显然关注如何在Java环境下处理文件上传操作。下面将详细介绍Java中实现文件上传的相关知识点。 一、Servlet API与multipart/form-data 在Java Web开发中,文件上传通常通过...
以上是关于Java文件上传工具类处理文件及文本数据的主要知识点。理解并熟练掌握这些概念,可以帮助开发者创建高效、安全的文件上传系统。在实际开发中,还需要根据具体需求和项目规范来定制和扩展这些基础功能。
**jQuery Uploadify与Java文件上传** 在Web开发中,文件上传功能是不可或缺的一部分。`jQuery Uploadify`是一款基于JavaScript和jQuery的插件,它提供了一种优雅的方式来进行多文件上传,具有良好的用户体验和丰富...
这个"Java文件上传案例"涵盖了使用jsp、Servlet和JDBC工具类实现文件上传的基本流程。以下是对这些知识点的详细解析: 首先,**Java文件上传**通常涉及到HTTP协议中的multipart/form-data编码类型,这是在HTML表单...
本文将详细介绍一个基于Java实现的多线程文件上传系统,并结合队列管理技术来优化后台处理流程。该系统通过创建多个线程来并行处理客户端的文件上传请求,同时利用队列结构来协调任务的调度与执行。 #### 关键技术...
Java文件上传是Web开发中常见的功能之一,SmartUpload是一个强大的Java文件上传组件,它使得在Java应用程序中处理文件上传变得简单。在这个场景中,我们主要关注如何使用SmartUpload进行文件上传,并通过一个Demo来...