如何在Java中将字节大小转换为人类可读的格式?像1024应该变成"1 Kb"而1024*1024应该变成"1 Mb".
我有点厌倦为每个项目编写这个实用工具方法.Apache Commons中是否有任何静态方法?
我在服务器上有一个文件,它是一个zip文件.如何检查文件大小是否大于27 MB?
File file = new File("U:\intranet_root\intranet\R1112B2.zip");
if (file > 27) {
//do something
}
Run Code Online (Sandbox Code Playgroud) 我有简单的SpringBoot应用程序文件上传功能,其中最大文件上传文件大小为2 MB.
我已经配置multipart.max-file-size=2MB它工作正常.但是当我尝试上传大小超过2 MB的文件时,我想处理该错误并显示错误消息.
为此我有我的控制器实现HandlerExceptionResolver与resolveException()实现如下:
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception exception)
{
Map<String, Object> model = new HashMap<String, Object>();
if (exception instanceof MaxUploadSizeExceededException)
{
model.put("msg", exception.getMessage());
} else
{
model.put("msg", "Unexpected error: " + exception.getMessage());
}
return new ModelAndView("homepage", model);
}
Run Code Online (Sandbox Code Playgroud)
问题是我得到的异常是MultipartException而不是MaxUploadSizeExceededException.
stacktrace是: 无法解析多部分servlet请求; 嵌套异常是java.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBase $ FileSizeLimitExceededException:字段myFile超过其允许的最大大小2097152字节.
在文件大小超过的情况下为什么我没有得到MaxUploadSizeExceededException?我得到它的父Exception MultipartException,除了文件大小超出之外,还可能由于许多其他原因而发生.
有什么想法吗?
需要:我只是试图获取手机中安装的每个应用程序的占用缓存大小.
我的方法:
PackageManager packageManager = getPackageManager();
List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages)
{
try
{
Context mContext = createPackageContext(packageInfo.packageName, CONTEXT_IGNORE_SECURITY);
File cacheDirectory = mContext.getCacheDir();
if(cacheDirectory==null)
{
cacheArrayList.add("0");
}
else
{
cacheArrayList.add(String.valueOf(cacheDirectory.length()/1024));
}
}
catch (NameNotFoundException e)
{
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
结果:如果directory为null,则返回0(作为条件).但是如果目录存在它总是返回4 Kb.我按照以下流程检查了我的应用的缓存:
设置 - >应用程序 - >应用程序名称
但我发现它在那里0B.
为什么它的发生可以解释一下?以及如何获得确切的缓存大小?
有很多的答案对这个问题的Java(如何字节大小转换为人类可读的格式在Java?和格式文件大小为MB,GB等)和甚至对Groovy/Grails的,更何况PHP,但有一个内置或方便的方法在FreeMarker中执行此操作?
为清楚起见,我采用通用SI方法,而不是2的二进制幂.例如
1 ? 1B
123 ? 123B
1000 ? 1KB
1728 ? 1.7KB
7077888 ? 7.1MB
Run Code Online (Sandbox Code Playgroud)
等等.
鉴于FreeMarker似乎没有对数函数,有没有办法在纯FreeMarker中执行此操作,或者是我用Java创建模板方法的唯一选择.
这里我比较了Android内置方法来格式化文件和自定义来自/sf/answers/391988971/
\nTimber.d(\n "Format file size using Formatter.formatFileSize " +\n "${Formatter.formatFileSize(this, 1_000_000_000L)}, " +\n "${Formatter.formatFileSize(this, 1_073_741_824L)}"\n)\n\nTimber.d(\n "Format file size using readableFileSize " +\n "${readableFileSize(1_000_000_000L)}, " +\n "${readableFileSize(1_073_741_824L)}"\n)\nRun Code Online (Sandbox Code Playgroud)\n。
\nfun readableFileSize(size: Long): String? {\n if (size <= 0) return "0"\n val units = arrayOf("B", "kB", "MB", "GB", "TB")\n val digitGroups = (log10(size.toDouble()) / log10(1024.0)).toInt()\n return DecimalFormat("#,##0.#").format(size / 1024.0.pow(digitGroups.toDouble()))\n .toString() + " " + units[digitGroups]\n}\nRun Code Online (Sandbox Code Playgroud)\n这是结果:
\nFormat file size using Formatter.formatFileSize 1,00\xc2\xa0GB, 1,07\xc2\xa0GB\nFormat file size using readableFileSize …Run Code Online (Sandbox Code Playgroud) 我想知道是否有人知道在Java/JSP/JSTL页面中格式化文件大小的好方法.
是否有这样的实用工具类?
我搜索了公地但却一无所获.任何自定义标签?
库已经存在吗?
理想情况下,我希望它的行为类似于Unix的ls命令中的-h开关
34 - > 34
795 - > 795
2646 - > 2.6K
2705 - > 2.7K
4096 - > 4.0K
13588 - > 14K
28282471 - > 27M
28533748 - > 28M
是否有任何库为人类可读的文件大小单位(如Duration)提供具有隐式转换(从 Int、Long、Float)的对象/类。
有了Duration你可以这样做:
11.millis
1.5.minutes
10.hours
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一些图书馆可以让我这样做:
1.gibabyte
1024.megabytes
10.gibibytes
10.GB
50.GiB
Run Code Online (Sandbox Code Playgroud)
我知道我可以自己实现这个,但我不想重新发明轮子。
如何在 Dart 中格式化文件大小?
输入:1000000
预期输出:1 MB
为了便于使用,输入可以是 anint或 a double,结果应该是String只有一位小数的 a。
java ×5
android ×2
filesize ×2
format ×2
formatting ×2
caching ×1
dart ×1
file ×1
filesystems ×1
flutter ×1
freemarker ×1
funnelback ×1
jsp ×1
jstl ×1
numbers ×1
scala ×1
spring-boot ×1
spring-mvc ×1
string ×1
url ×1