java面试题网

普通会员

257

帖子

9

回复

131

积分

楼主
发表于 2018-03-26 17:24:04 | 查看: 313| 回复: 0

转换文件大小

 

import java.text.DecimalFormat;

 

import java.util.Hashtable;

 

 

/**

 

文件大小单位转换

 

@author Administrator

 

*/

 

public class UnitsConversion extends DecimalFormat {

 

 

private static final long serialVersionUID = 3168068393840262910L; /**

存放有效单位的数组

 

*/

 

private static Hashtable<String, String> validUnits = new Hashtable<String, String>(); /**

 

限制文件大小上限为 1G

 

*/

 

private static int GB_MAX_SIZE = 1;

 

/**

 

最大的 MB 

 

*/

 

private static int MB_MAX_SIZE = GB_MAX_SIZE * 1024; /**

 

最大的 KB 

 

*/

 

private static int KB_MAX_SIZE = MB_MAX_SIZE * 1024; /**

 

最大的 Bytes 

 

*/

 

private static int BYTES_MAX_SIZE = KB_MAX_SIZE * 1024; /**

数字部分的值

 

*/


 

private Double numPart;

 

/**

 

原始的单位字符串

 

*/

 

private String originalUnit;

 

/**

 

标准的单位字符串

 

*/

 

private String unit;

 

/**

 

转换后的结果

 

*/

 

private String result;

 

 

添加所有有效单位 static {

 

validUnits.put("字节", "Bytes"); 

validUnits.put("bytes", "Bytes"); 

validUnits.put("byte", "Bytes"); 

validUnits.put("kb", "KB"); 

validUnits.put("k", "KB"); 

validUnits.put("", "MB"); 

validUnits.put("mb", "MB"); 

validUnits.put("m", "MB"); 

validUnits.put("gb", "GB"); 

validUnits.put("g", "GB");

 

}

 

 

/**

 

构造方法:指定了数字格式,初始所有属性为 NULL

 

*/

 

public UnitsConversion() {

 

super("########.##");

 

numPart = null;

 

result = null;

 

unit = null;

 

originalUnit = null;

 

}

 

 

/**

 

根据单位、数字大小按照常用的转换原则进行转换

 

@param input

 

@return 成功转换后的结果是非空字符串;若失败了,结果为空字符串


 

*/

 

public String defaultConversion(String input) {

 

analyzeString(input);

 

if (result != null) {

 

return result;

 

}

 

// 单位 Bytes

 

if (unit.equals("Bytes")) {

 

int numPart2Int = numPart.intValue();

 

输入大小与 1G 相差 0.5M 之内,返回 1GB

 

if ((BYTES_MAX_SIZE - numPart2Int) < (1024 * 1024) / 2) { return "1 GB";

 

}

 

// (0,1KB)

 

if (numPart2Int < 1024) {

 

return numPart2Int + " Bytes";

 

}

 

// [1KB,1023KB]

 

if (numPart2Int >= 1024 && numPart2Int <= (1024 - 1) * 1024) { return format(numPart / 1024) + " KB";

 

}

 

// (1023KB,1GB)

 

if (numPart2Int > (1024 - 1) * 1024 && numPart2Int < BYTES_MAX_SIZE) { return format(numPart / (1024 * 1024)) + " MB";

 

else

 

result = "";

 

return result;

 

}

 

 

if (unit.equals("KB")) {

 

return "还没实现....";

 

}

 

 

if (unit.equals("MB")) {

 

return "还没实现....";

 

}

 

 

if (unit.equals("GB")) {

 

return "还没实现....";

 

}

 

result = "";

 

return result;

 

}


 

/** * 把字符串的数字部分与单位分离,并对数字、单位的有效性进行检验, 若有非法状况,把结果赋值为 "" ,将其返回给用户 * * @param input

 

*/

 

public void analyzeString(String input) {

 

初步检验输入的字符串

 

if (input == null || input.trim().length() < 2) {

 

System.out.println("输入的字符串有误");

 

result = "";

 

return;

 

}

 

input = input.replaceAll(" ", "");

 

int firstIndexOfUnit;// 单位的起始位置

 

String strOfNum;// 数字部分的字符串

 

从尾部开始遍历字符串

 

for (int i = input.length() - 1; i >= 0; i--) {

 

if (Character.isDigit(input.charAt(i))) {

 

firstIndexOfUnit = i + 1;

 

originalUnit = input.substring(firstIndexOfUnit,

 

input.length()).toLowerCase();

 

if (!isValidUnit(originalUnit)) {

 

System.out.println("无效单位。");

 

result = "";

 

return;

 

}

 

unit = validUnits.get(originalUnit);

 

strOfNum = input.substring(0, firstIndexOfUnit);

 

numPart = Double.parseDouble(strOfNum);

 

if (!isValidNum(numPart, unit)) {

 

System.out.println("文件大小非法");

 

result = "";

 

return;

 

}

 

if (numPart == 0) {

 

result = "0 Bytes";

 

return;

 

}

 

break;

 

}

 

}

 

if (unit == null || numPart == null) {

 

System.out.println("输入的字符串有误");

 

result = "";

 

return;

 

}


 

}

 

 

/**

 

文件大小越界检查

 

 

@param num

 

@param unit

 

@return  1G 范围内(包括 1G),返回 true;否则返回 false */

 

public boolean isValidNum(Double num, String unit) {

 

if (num == null || num < 0 || num > BYTES_MAX_SIZE) { return false;

 

}

 

if (unit.equals("KB") && num > KB_MAX_SIZE) {

 

return false;

 

}

 

if (unit.equals("MB") && num > MB_MAX_SIZE) {

 

return false;

 

}

 

if (unit.equals("GB") && num > GB_MAX_SIZE) {

 

return false;

 

}

 

return true;

 

}

 

 

/**

 

检查原始单位 originalUnit 是否有效

 

 

@param originalUnit

 

@return  originalUnit 为空,那么会给他赋默认值 bytes ,并返回 true<br>

 

 originalUnit 是有效单位集合中之一,返回 true

 

*/

 

public boolean isValidUnit(String originalUnit) {

 

if (originalUnit == null || originalUnit.trim().length() < 1) { originalUnit = "bytes";

 

return true;

 

}

 

for (String validUnit : validUnits.keySet()) {

 

if (validUnit.equalsIgnoreCase(originalUnit)) {

 

return true;

 

}

 

}

 

return false;


 

}

 

//测试

 

public static void main(String[] args) {

 

System.out.println("-------------");

 

for (int i = 1020 * 1024; i <= 1024 * 1111; i += 9) {

 

String input = i + " ";

 

System.out.println(input + " ---> "

 

new UnitsConversion().defaultConversion(input));

 

}

 

}

 

 

}

 

 

Java 日期格式化及其使用例子

 

 

 

 

1 SimpleDateFormat 担当重任,怎样格式化都行

 

import java.util.Date;

 

import java.text.SimpleDateFormat;

 

public class Demo

 

{

 

public static void main(String[] args)

 

{

 

Date now=new Date();

 

SimpleDateFormat f=newSimpleDateFormat("今天是"+"yyyy  MM  dd  E kk  mm "); System.out.println(f.format(now));

 

f=new SimpleDateFormat("a hh  mm  ss ");

 

System.out.println(f.format(now));

 

}

 

}

 

 

从字符串到日期类型的转换:


 

import java.util.Date;

 

import java.text.SimpleDateFormat;

 

import java.util.GregorianCalendar;

 

import java.text.*;

 

publicclass Demo

 

{

 

public static void main(String[] args)

 

{

 

String strDate="2005  04  22 ";

 

//注意:SimpleDateFormat 构造函数的样式与 strDate 的样式必须相符

 

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy  MM  dd "); //必须捕获异常

 

try

 

{

 

Date date=simpleDateFormat.parse(strDate);

 

System.out.println(date);

 

}

 

catch(ParseException px)

 

{

 

px.printStackTrace();

 

}

 

}

 

}

 

 

将毫秒数换转成日期类型

 


import java.util.Date;

 

import java.text.SimpleDateFormat;

 

import java.util.GregorianCalendar;

 

import java.text.*;

 

public class Demo

 

{

 

public static void main(String[] args)

 

{

 

long now=System.currentTimeMillis();

 

System.out.println("毫秒数:"+now);

 

Date dNow=new Date(now);

 

System.out.println("日期类型:"+dNow);

 

}

 

}

 

 

获取系统时期和时间,转换成 SQL 格式后更新到数据库

java.util.Date d=new java.util.Date(); //获取当前系统的时间

 

 

//格式化日期

 

 

new java.text.SimpleDateFormat s= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

String dateStr = s.format(d); //转为字符串

 

 

使用 RS 更新数据库,仍然要用 rs.updateString,而不是 rs.updateDade rs.updateString("regtime",dateStr); //regtime 字段为 datetime 类型的

 

 

按本地时区输出当前日期

 

Date myDate = new Date();

 

System.out.println(myDate.toLocaleString());

 

输出结果为:

 

2003-5-30

 

 


如何格式化小数

 

DecimalFormat df = new DecimalFormat(",###.00");

 

double aNumber = 33665448856.6568975;

 

String result = df.format(aNumber);

 

Sytem. out.println(result);

 

 

输出结果为:

 

33,665,448,856.66

 

其他:获取毫秒时间 System.currentTimeMillis();

 


在数据库里的日期只以年--日的方式输出

 

 

定义日期格式:SimpleDateFormat sdf = new SimpleDateFormat(yy-MM-dd);

 

sql 语句为:String sqlStr = "select bookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";

 

输出:

 

System.out.println(df.format(rs.getDate("bookDate")));



您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018