分享一个文件上传工具类
文件上传状态枚举类:
View Code
1 package com.hoo.enums; 2 3 4 5 /** 6 7 * <b>function:</b> 文件上传状态 8 9 * @package com.hoo.enums 10 11 * @fileName UploadState.java 12 13 * @createDate 2010-10-11 下午12:18:14 14 15 * @author hoojo 16 17 */ 18 19 public enum UploadState { 20 21 UPLOAD_SUCCSSS(0, "上传文件成功!"), 22 23 UPLOAD_FAILURE(1, "上传文件失败!"), 24 25 UPLOAD_TYPE_ERROR(2, "上传文件类型错误!"), 26 27 UPLOAD_OVERSIZE(3, "上传文件过大!"), 28 29 UPLOAD_ZEROSIZE(4, "上传文件为空!"), 30 31 UPLOAD_NOTFOUND(5, "上传文件路径错误!"); 32 33 34 35 private String state; 36 37 private int flag; 38 39 public String getState() { 40 41 return this.state; 42 43 } 44 45 46 47 public int getFlag() { 48 49 return this.flag; 50 51 } 52 53 UploadState(int flag, String state) { 54 55 this.state = state; 56 57 this.flag = flag; 58 59 } 60 61 }
文件上传工具类code:
View Code
1 package com.hoo.util; 2 3 4 5 import java.io.File; 6 7 import java.io.FileInputStream; 8 9 import java.io.FileNotFoundException; 10 11 import java.io.FileOutputStream; 12 13 import java.io.IOException; 14 15 import java.io.InputStream; 16 17 import java.text.SimpleDateFormat; 18 19 import java.util.Date; 20 21 import java.util.Random; 22 23 import java.util.UUID; 24 25 import org.apache.commons.io.FileUtils; 26 27 import com.hoo.enums.UploadState; 28 29 30 31 /*** 32 33 * <b>function:</b> 文件上传工具类 34 35 * @author hoojo 36 37 * @createDate Oct 9, 2010 11:12:47 PM 38 39 * @file UploadFileUtils.java 40 41 * @package com.hoo.util 42 43 * @blog http://blog.csdn.net/IBM_hoojo 44 45 * @email hoojo_@126.com 46 47 * @version 1.0 48 49 */ 50 51 public abstract class UploadFileUtils { 52 53 54 55 //上传文件保存路径 56 57 public static String path = "/upload/"; 58 59 //定义可以上传文件的后缀数组,默认"*",代表所有 60 61 public static String[] filePostfixs = { "*" }; 62 63 public static String[] typeImages = { "gif", "jpeg", "png", "jpg", "tif", "bmp" }; 64 65 public static String[] typeOthers = { "html", "htm", "doc", "xls", "txt", "zip", "rar", "pdf", "cll" }; 66 67 68 69 //上传文件的最大长度 70 71 public static long maxFileSize = 1024 * 1024 * 1024 * 2L;//2G 72 73 //一次读取多少字节 74 75 public static int bufferSize = 1024 * 8; 76 77 78 79 private final static void init() { 80 81 if (bufferSize > Integer.MAX_VALUE) { 82 83 bufferSize = 1024 * 8; 84 85 } else if (bufferSize < 8) { 86 87 bufferSize = 8; 88 89 } 90 91 if (maxFileSize < 1) { 92 93 maxFileSize = 1024 * 1024 * 1024 * 2L; 94 95 } else if (maxFileSize > Long.MAX_VALUE) { 96 97 maxFileSize = 1024 * 1024 * 1024 * 2L; 98 99 } 100 101 } 102 103 104 105 /** 106 107 * <b>function:</b>通过输入流参数上传文件 108 109 * @author hoojo 110 111 * @createDate Oct 9, 2010 11:22:47 PM 112 113 * @param uploadFileName 文件名称 114 115 * @param savePath 保存路径 116 117 * @param InputStream 上传的文件的输入流 118 119 * @return 是否上传成功 120 121 * @throws Exception 122 123 */ 124 125 public static UploadState upload4Stream(String fileName, String path, InputStream is) throws Exception { 126 127 init(); 128 129 UploadState state = UploadState.UPLOAD_FAILURE; 130 131 FileOutputStream fos = null; 132 133 134 135 try { 136 137 path = getDoPath(path); 138 139 mkDir(path); 140 141 fos = new FileOutputStream(path + fileName); 142 143 144 145 byte[] buffer = new byte[bufferSize]; 146 147 int len = 0; 148 149 while ((len = is.read(buffer)) > 0) { 150 151 fos.write(buffer, 0, len); 152 153 } 154 155 state = UploadState.UPLOAD_SUCCSSS; 156 157 } catch (FileNotFoundException e) { 158 159 state = UploadState.UPLOAD_NOTFOUND; 160 161 throw e; 162 163 } catch (IOException e) { 164 165 state = UploadState.UPLOAD_FAILURE; 166 167 throw e; 168 169 } finally { 170 171 if (is != null) { 172 173 is.close(); 174 175 } 176 177 if (fos != null) { 178 179 fos.flush(); 180 181 fos.close(); 182 183 } 184 185 } 186 187 return state; 188 189 } 190 191 192 193 /** 194 195 * <b>function:</b>上传文件 196 197 * @author hoojo 198 199 * @createDate Oct 9, 2010 11:33:27 PM 200 201 * @param uploadFileName 文件名称 202 203 * @param savePath 保存路径 204 205 * @param uploadFile 上传的文件 206 207 * @return 是否上传成功 208 209 * @throws Exception 210 211 */ 212 213 public static UploadState upload4Stream(String fileName, String path, File file) throws Exception { 214 215 init(); 216 217 UploadState state = UploadState.UPLOAD_FAILURE; 218 219 FileInputStream fis = null; 220 221 try { 222 223 long size = file.length(); 224 225 if (size <= 0) { 226 227 state = UploadState.UPLOAD_ZEROSIZE; 228 229 } else { 230 231 if (size <= maxFileSize) { 232 233 fis = new FileInputStream(file); 234 235 state = upload4Stream(fileName, path, fis); 236 237 } else { 238 239 state = UploadState.UPLOAD_OVERSIZE; 240 241 } 242 243 } 244 245 } catch (FileNotFoundException e) { 246 247 state = UploadState.UPLOAD_NOTFOUND; 248 249 throw e; 250 251 } catch (IOException e) { 252 253 state = UploadState.UPLOAD_FAILURE; 254 255 throw e; 256 257 } finally { 258 259 if (fis != null) { 260 261 fis.close(); 262 263 } 264 265 } 266 267 return state; 268 269 } 270 271 272 273 /** 274 275 * <b>function:</b>通过数组进行验证文件类型上传 276 277 * @author hoojo 278 279 * @createDate Oct 10, 2010 3:39:34 PM 280 281 * @param fileName 文件名称 282 283 * @param path 文件路径 284 285 * @param file 文件 286 287 * @param allowTypes 文件后缀、类型数组 288 289 * @return 返回是否上传成功 290 291 * @throws Exception 292 293 */ 294 295 public static UploadState upload4Stream(String fileName, String path, File file, String[] allowTypes) throws Exception { 296 297 UploadState state = UploadState.UPLOAD_FAILURE; 298 299 if (validTypeByName(fileName, allowTypes)) { 300 301 state = upload4Stream(fileName, path, file); 302 303 } else { 304 305 state = UploadState.UPLOAD_TYPE_ERROR; 306 307 } 308 309 return state; 310 311 } 312 313 314 315 /** 316 317 * <b>function:</b>通过数组进行验证文件类型上传 318 319 * @author hoojo 320 321 * @createDate Oct 10, 2010 3:43:30 PM 322 323 * @param fileName 文件名称 324 325 * @param path 文件路径 326 327 * @param InputStream 文件输入流 328 329 * @param allowTypes 文件后缀、类型数组 330 331 * @return 返回是否上传成功 332 333 * @throws Exception 334 335 */ 336 337 public static UploadState upload4Stream(String fileName, String path, InputStream fs, String[] allowTypes) throws Exception { 338 339 UploadState state = UploadState.UPLOAD_FAILURE; 340 341 if (validTypeByName(fileName, allowTypes)) { 342 343 state = upload4Stream(fileName, path, fs); 344 345 } else { 346 347 state = UploadState.UPLOAD_TYPE_ERROR; 348 349 } 350 351 return state; 352 353 } 354 355 356 357 /** 358 359 * <b>function:</b> 利用FileUtils上传文件;其中maxFileSize是限制上传文件的大小 360 361 * @author hoojo 362 363 * @createDate Oct 9, 2010 11:49:15 PM 364 365 * @param fileName 文件名称 366 367 * @param path 保存路径 368 369 * @param file 文件 370 371 * @return 是否上传成功 372 373 * @throws Exception 374 375 */ 376 377 public static boolean upload4CopyFile(String fileName, String path, File file) throws Exception { 378 379 init(); 380 381 boolean success = false; 382 383 if (file.length() <= maxFileSize) { 384 385 path = getDoPath(path); 386 387 mkDir(path); 388 389 File destFile = new File(path, fileName); 390 391 FileUtils.copyFile(file, destFile); 392 393 success = true; 394 395 } 396 397 return success; 398 399 } 400 401 402 403 /** 404 405 * <b>function:</b>上传指定文件类型的文件 406 407 * @author hoojo 408 409 * @createDate Oct 10, 2010 12:30:09 PM 410 411 * @param fileName 文件名 412 413 * @param path 路径 414 415 * @param file 文件 416 417 * @param allowTypes 类型、后缀数组 418 419 * @return 成功上传的文件名 420 421 * @throws Exception 422 423 */ 424 425 public static boolean upload4CopyFile(String fileName, String path, File file, String[] allowTypes) throws Exception { 426 427 boolean success = false; 428 429 if (validTypeByName(fileName, allowTypes)) { 430 431 success = upload4CopyFile(fileName, path, file); 432 433 } 434 435 return success; 436 437 } 438 439 440 441 /** 442 443 * <b>function:</b> 根据文件名和类型数组验证文件类型是否合法,flag是否忽略大小写 444 445 * @author hoojo 446 447 * @createDate Oct 10, 2010 11:54:54 AM 448 449 * @param fileName 文件名 450 451 * @param allowTypes 类型数组 452 453 * @param flag 是否获得大小写 454 455 * @return 是否验证通过 456 457 */ 458 459 public static boolean validTypeByName(String fileName, String[] allowTypes, boolean flag) { 460 461 String suffix = getType(fileName); 462 463 boolean valid = false; 464 465 if (allowTypes.length > 0 && "*".equals(allowTypes[0])) { 466 467 valid = true; 468 469 } else { 470 471 for (String type : allowTypes) { 472 473 if (flag) {//不区分大小写后缀 474 475 if (suffix != null && suffix.equalsIgnoreCase(type)) { 476 477 valid = true; 478 479 break; 480 481 } 482 483 } else {//严格区分大小写 484 485 if (suffix != null && suffix.equals(type)) { 486 487 valid = true; 488 489 break; 490 491 } 492 493 } 494 495 } 496 497 } 498 499 return valid; 500 501 } 502 503 504 505 /** 506 507 * <b>function:</b>根据文件名称和类型数组验证文件类型是否合法 508 509 * @author hoojo 510 511 * @createDate Oct 10, 2010 10:27:17 AM 512 513 * @param fileName 文件名 514 515 * @param allowTypes 文件类型数组 516 517 * @return 是否合法 518 519 */ 520 521 public static boolean validTypeByName(String fileName, String[] allowTypes) { 522 523 return validTypeByName(fileName, allowTypes, true); 524 525 } 526 527 528 529 /** 530 531 * <b>function:</b> 根据后缀和类型数组验证文件类型是否合法,flag是否区分后缀大小写,true严格大小写 532 533 * @author hoojo 534 535 * @createDate Oct 10, 2010 12:00:10 PM 536 537 * @param suffix 后缀名 538 539 * @param allowTypes 文件类型数组 540 541 * @param flag 是否区分大小写 542 543 * @return 是否合法 544 545 */ 546 547 public static boolean validTypeByPostfix(String suffix, String[] allowTypes, boolean flag) { 548 549 boolean valid = false; 550 551 if (allowTypes.length > 0 && "*".equals(allowTypes[0])) { 552 553 valid = true; 554 555 } else { 556 557 for (String type : allowTypes) { 558 559 if (flag) {//不区分大小写后缀 560 561 if (suffix != null && suffix.equalsIgnoreCase(type)) { 562 563 valid = true; 564 565 break; 566 567 } 568 569 } else {//严格区分大小写 570 571 if (suffix != null && suffix.equals(type)) { 572 573 valid = true; 574 575 break; 576 577 } 578 579 } 580 581 } 582 583 } 584 585 return valid; 586 587 } 588 589 590 591 /** 592 593 * <b>function:</b>根据文件后缀名和类型数组,验证文件类型是否合法 594 595 * @author hoojo 596 597 * @createDate Oct 10, 2010 10:25:32 AM 598 599 * @param suffix 后缀名 600 601 * @param allowTypes 类型数组 602 603 * @return 是否合法 604 605 */ 606 607 public static boolean validTypeByPostfix(String suffix, String[] allowTypes) { 608 609 return validTypeByPostfix(suffix, allowTypes, true); 610 611 } 612 613 614 615 /** 616 617 * <b>function:</b>验证当前后缀、文件类型是否是图片类型 618 619 * typeImages 可以设置图片类型 620 621 * @author hoojo 622 623 * @createDate Oct 10, 2010 12:17:18 PM 624 625 * @param suffix 验证文件的后缀 626 627 * @return 是否合法 628 629 */ 630 631 public static boolean validTypeByPostfix4Images(String suffix) { 632 633 return validTypeByPostfix(suffix, typeImages); 634 635 } 636 637 638 639 /** 640 641 * <b>function:</b>验证当前后缀、文件类型是否是非图片类型(常用办公文件类型) 642 643 * typeOthers 可以设置文件类型 644 645 * @author hoojo 646 647 * @createDate Oct 10, 2010 12:18:18 PM 648 649 * @param suffix 验证文件的后缀 650 651 * @return 是否合法 652 653 */ 654 655 public static boolean validTypeByPostfix4Others(String suffix) { 656 657 return validTypeByPostfix(suffix, typeOthers); 658 659 } 660 661 662 663 /** 664 665 * <b>function:</b>验证当前文件名、文件类型是否是图片类型 666 667 * typeImages 可以设置图片类型 668 669 * @author hoojo 670 671 * @createDate Oct 10, 2010 12:19:18 PM 672 673 * @param fileName 验证文件的名称 674 675 * @return 是否合法 676 677 */ 678 679 public static boolean validTypeByName4Images(String fileName) { 680 681 return validTypeByName(fileName, typeImages); 682 683 } 684 685 686 687 /** 688 689 * <b>function:</b>验证当前文件名称、文件类型是否是非图片类型(常用办公文件类型) 690 691 * typeOthers 可以设置文件类型 692 693 * @author hoojo 694 695 * @createDate Oct 10, 2010 12:21:22 PM 696 697 * @param fileName 验证文件的名称 698 699 * @return 是否合法 700 701 */ 702 703 public static boolean validTypeByName4Others(String fileName) { 704 705 return validTypeByName(fileName, typeOthers); 706 707 } 708 709 710 711 /** 712 713 * <b>function:</b>传递一个路径和文件名称,删除该文件 714 715 * @author hoojo 716 717 * @createDate Oct 10, 2010 10:47:57 AM 718 719 * @param fileName 文件名称 720 721 * @param path 路径 722 723 * @return 是否删除成功 724 725 */ 726 727 public static boolean removeFile(String fileName, String path) { 728 729 boolean flag = false; 730 731 if (isFileExist(fileName, path)) { 732 733 File file = new File(getDoPath(path) + fileName); 734 735 flag = file.delete(); 736 737 } 738 739 return flag; 740 741 } 742 743 744 745 /** 746 747 * <b>function:</b>删除当前文件 748 749 * @author hoojo 750 751 * @createDate Oct 10, 2010 10:49:54 AM 752 753 * @param file 要删除的文件 754 755 * @return 是否删除成功 756 757 */ 758 759 public static boolean removeFile(File file) { 760 761 boolean flag = false; 762 763 if (file != null && file.exists()) { 764 765 flag = file.delete(); 766 767 } 768 769 return flag; 770 771 } 772 773 774 775 /** 776 777 * <b>function:</b>删除某个文件 778 779 * @author hoojo 780 781 * @createDate Oct 12, 2010 9:33:06 PM 782 783 * @param path 传递该文件路径 784 785 * @return 删除是否成功 786 787 */ 788 789 public static boolean removeFile(String path) { 790 791 return removeFile(new File(path)); 792 793 } 794 795 796 797 /** 798 799 * <b>function:</b>删除当前文件下面所有文件 800 801 * @author hoojo 802 803 * @createDate Oct 12, 2010 9:27:33 PM 804 805 * @param file File 要删除的文件夹下面文件的文件对象 806 807 * @return 是否删除成功,如果有一个文件删除失败,将返回false 808 809 */ 810 811 public static boolean removeFile4Dir(File file) { 812 813 boolean flag = false; 814 815 if (file != null && file.exists() && file.isDirectory()) { 816 817 File[] allFile = file.listFiles(); 818 819 for (File f : allFile) { 820 821 flag = f.delete(); 822 823 if (!flag) { 824 825 System.err.println("删除文件" + f.getAbsolutePath() + "出错了!"); 826 827 break; 828 829 } 830 831 } 832 833 } 834 835 return flag; 836 837 } 838 839 840 841 /** 842 843 * <b>function:</b>删除当前目录下所有文件 844 845 * @author hoojo 846 847 * @createDate Oct 12, 2010 9:34:41 PM 848 849 * @param path 目录、路径 850 851 * @return 是否成功 852 853 */ 854 855 public static boolean removeFile4Dir(String path) { 856 857 return removeFile4Dir(new File(path)); 858 859 } 860 861 862 863 /** 864 865 * <b>function:</b>删除某个文件夹下的所有文件(除目录),包含子文件夹的文件 866 867 * @author hoojo 868 869 * @createDate Oct 12, 2010 9:30:01 PM 870 871 * @param file 即将删除文件夹对象 872 873 * @return 是否删除成功 874 875 */ 876 877 public static boolean removeAllFile4Dir(File file) { 878 879 boolean flag = false; 880 881 if (file != null && file.exists() && file.isDirectory()) { 882 883 File[] allFile = file.listFiles(); 884 885 for (File f : allFile) { 886 887 if (!f.isDirectory()) { 888 889 flag = f.delete(); 890 891 } else { 892 893 flag = removeAllFile4Dir(f); 894 895 } 896 897 if (!flag) { 898 899 System.err.println("删除文件" + f.getAbsolutePath() + "出错了!"); 900 901 break; 902 903 } 904 905 } 906 907 } 908 909 return flag; 910 911 } 912 913 914 915 /** 916 917 * <b>function:</b>删除某个目录下所有文件(不包含文件夹,包含文件夹下的文件) 918 919 * @author hoojo 920 921 * @createDate Oct 12, 2010 9:36:17 PM 922 923 * @param path 924 925 * @return 926 927 */ 928 929 public static boolean removeAllFile4Dir(String path) { 930 931 return removeAllFile4Dir(new File(path)); 932 933 } 934 935 936 937 /** 938 939 * <b>function:</b> 传入一个文件名,得到这个文件名称的后缀 940 941 * @author hoojo 942 943 * @createDate Oct 9, 2010 11:30:46 PM 944 945 * @param fileName 文件名 946 947 * @return 后缀名 948 949 */ 950 951 public static String getSuffix(String fileName) { 952 953 int index = fileName.lastIndexOf("."); 954 955 if (index != -1) { 956 957 String suffix = fileName.substring(index);//后缀 958 959 return suffix; 960 961 } else { 962 963 return null; 964 965 } 966 967 } 968 969 970 971 /** 972 973 * <b>function:</b>和文件后缀一样,不同的是没有“.” 974 975 * @author hoojo 976 977 * @createDate Oct 10, 2010 2:42:43 PM 978 979 * @param fileName 文件名称 980 981 * @return 982 983 */ 984 985 public static String getType(String fileName) { 986 987 int index = fileName.lastIndexOf("."); 988 989 if (index != -1) { 990 991 String suffix = fileName.substring(index + 1);//后缀 992 993 return suffix; 994 995 } else { 996 997 return null; 998 999 } 1000 1001 } 1002 1003 1004 1005 /** 1006 1007 * <b>function:</b> 传递一个文件名称和一个新名称,组合成一个新的带后缀文件名 1008 1009 * 当传递的文件名没有后缀,会添加默认的后缀 1010 1011 * @author hoojo 1012 1013 * @createDate Oct 9, 2010 10:53:06 PM 1014 1015 * @param fileName 文件名称 1016 1017 * @param newName 新文件名称 1018 1019 * @param nullSuffix 为没有后缀的文件所添加的后缀;eg:txt 1020 1021 * @return String 文件名称 1022 1023 */ 1024 1025 public static String getNewFileName(String fileName, String newName, String nullSuffix) { 1026 1027 String suffix = getSuffix(fileName); 1028 1029 if (suffix != null) { 1030 1031 newName += suffix; 1032 1033 } else { 1034 1035 newName = newName.concat(".").concat(nullSuffix); 1036 1037 } 1038 1039 return newName; 1040 1041 } 1042 1043 1044 1045 /** 1046 1047 * <b>function:</b> 利用uuid产生一个随机的name 1048 1049 * @author hoojo 1050 1051 * @createDate Oct 9, 2010 10:45:27 PM 1052 1053 * @param fileName 带后缀的文件名称 1054 1055 * @return String 随机生成的name 1056 1057 */ 1058 1059 public static String getRandomName(String fileName) { 1060 1061 String randomName = UUID.randomUUID().toString(); 1062 1063 return getNewFileName(fileName, randomName, "txt"); 1064 1065 } 1066 1067 1068 1069 /** 1070 1071 * <b>function:</b> 用当前日期、时间和1000以内的随机数组合成的文件名称 1072 1073 * @author hoojo 1074 1075 * @createDate Oct 9, 2010 11:01:47 PM 1076 1077 * @param fileName 文件名称 1078 1079 * @return 新文件名称 1080 1081 */ 1082 1083 public static String getNumberName(String fileName) { 1084 1085 SimpleDateFormat format = new SimpleDateFormat("yyMMddhhmmss"); 1086 1087 int rand = new Random().nextInt(1000); 1088 1089 String numberName = format.format(new Date()) + rand; 1090 1091 return getNewFileName(fileName, numberName, "txt"); 1092 1093 } 1094 1095 1096 1097 /** 1098 1099 * <b>function:</b>判断该文件是否存在 1100 1101 * @author hoojo 1102 1103 * @createDate Oct 10, 2010 12:00:44 AM 1104 1105 * @param fileName 文件名称 1106 1107 * @param path 目录 1108 1109 * @return 是否存在 1110 1111 */ 1112 1113 public static boolean isFileExist(String fileName, String path) { 1114 1115 File file = new File(getDoPath(path) + fileName); 1116 1117 return file.exists(); 1118 1119 } 1120 1121 1122 1123 /** 1124 1125 * <b>function:</b>返回可用的文件名 1126 1127 * @author hoojo 1128 1129 * @createDate Oct 10, 2010 1:02:45 AM 1130 1131 * @param fileName 文件名 1132 1133 * @param path 路径 1134 1135 * @return 可用文件名 1136 1137 */ 1138 1139 public static String getBracketFileName(String fileName, String path) { 1140 1141 return getBracketFileName(fileName, fileName, path, 1); 1142 1143 } 1144 1145 1146 1147 1148 1149 /** 1150 1151 * <b>function:</b>递归处理文件名称,直到名称不重复(对文件名、目录文件夹都可用) 1152 1153 * eg: a.txt --> a(1).txt 1154 1155 * 文件夹upload--> 文件夹upload(1) 1156 1157 * @author hoojo 1158 1159 * @createDate Oct 10, 2010 12:56:27 AM 1160 1161 * @param fileName 文件名称 1162 1163 * @param path 文件路径 1164 1165 * @param num 累加数字,种子 1166 1167 * @return 返回没有重复的名称 1168 1169 */ 1170 1171 public static String getBracketFileName(String fileName, String bracketName, String path, int num) { 1172 1173 boolean exist = isFileExist(bracketName, path); 1174 1175 if (exist) { 1176 1177 int index = fileName.lastIndexOf("."); 1178 1179 String suffix = ""; 1180 1181 bracketName = fileName; 1182 1183 if (index != -1) { 1184 1185 suffix = fileName.substring(index); 1186 1187 bracketName = fileName.substring(0, index); 1188 1189 } 1190 1191 bracketName += "(" + num + ")" + suffix; 1192 1193 num++; 1194 1195 bracketName = getBracketFileName(fileName, bracketName, path, num); 1196 1197 } 1198 1199 return bracketName; 1200 1201 } 1202 1203 1204 1205 /** 1206 1207 * <b>function:</b>处理后的系统文件路径 1208 1209 * @author hoojo 1210 1211 * @createDate Oct 10, 2010 12:49:31 AM 1212 1213 * @param path 文件路径 1214 1215 * @return 返回处理后的路径 1216 1217 */ 1218 1219 public static String getDoPath(String path) { 1220 1221 path = path.replace("\\", "/"); 1222 1223 String lastChar = path.substring(path.length() - 1); 1224 1225 if (!"/".equals(lastChar)) { 1226 1227 path += "/"; 1228 1229 } 1230 1231 return path; 1232 1233 } 1234 1235 1236 1237 /** 1238 1239 * <b>function:</b> 创建指定的path路径目录 1240 1241 * @author hoojo 1242 1243 * @createDate Oct 9, 2010 11:03:49 PM 1244 1245 * @param path 目录、路径 1246 1247 * @return 是否创建成功 1248 1249 * @throws Exception 1250 1251 */ 1252 1253 public static boolean mkDir(String path) throws Exception { 1254 1255 File file = null; 1256 1257 try { 1258 1259 file = new File(path); 1260 1261 if (!file.exists()) { 1262 1263 return file.mkdirs(); 1264 1265 } 1266 1267 } catch (RuntimeException e) { 1268 1269 throw e; 1270 1271 } finally { 1272 1273 file = null; 1274 1275 } 1276 1277 return false; 1278 1279 } 1280 1281 1282 1283 /** 1284 1285 * 创建缩略图 1286 1287 * @param file 上传的文件流 1288 1289 * @param height 最小的尺寸 1290 1291 * @throws IOException 1292 1293 */ 1294 1295 /*public static void writeBrevityPic(File file, float width, float height) throws IOException { 1296 1297 Image src = javax.imageio.ImageIO.read(file); // 构造Image对象 1298 1299 int old_w = src.getWidth(null); // 得到源图宽 1300 1301 int old_h = src.getHeight(null); 1302 1303 int new_w = 0; 1304 1305 int new_h = 0; // 得到源图长 1306 1307 float tempdouble; 1308 1309 if (old_w >= old_h) { 1310 1311 tempdouble = old_w / width; 1312 1313 } else { 1314 1315 tempdouble = old_h / height; 1316 1317 } 1318 1319 1320 1321 if (old_w >= width || old_h >= height) { // 如果文件小于锁略图的尺寸则复制即可 1322 1323 new_w = Math.round(old_w / tempdouble); 1324 1325 new_h = Math.round(old_h / tempdouble);// 计算新图长宽 1326 1327 while (new_w > width && new_h > height) { 1328 1329 if (new_w > width) { 1330 1331 tempdouble = new_w / width; 1332 1333 new_w = Math.round(new_w / tempdouble); 1334 1335 new_h = Math.round(new_h / tempdouble); 1336 1337 } 1338 1339 if (new_h > height) { 1340 1341 tempdouble = new_h / height; 1342 1343 new_w = Math.round(new_w / tempdouble); 1344 1345 new_h = Math.round(new_h / tempdouble); 1346 1347 } 1348 1349 } 1350 1351 BufferedImage tag = new BufferedImage(new_w, new_h, BufferedImage.TYPE_INT_RGB); 1352 1353 tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); // 绘制缩小后的图 1354 1355 FileOutputStream newimage = new FileOutputStream(file); // 输出到文件流 1356 1357 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage); 1358 1359 JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag); 1360 1361 param.setQuality((float) (100 / 100.0), true);// 设置图片质量,100最大,默认70 1362 1363 encoder.encode(tag, param); 1364 1365 encoder.encode(tag); // 将JPEG编码 1366 1367 newimage.close(); 1368 1369 } 1370 1371 }*/ 1372 1373 1374 1375 public static void main(String[] args) throws Exception { 1376 1377 String path = "F:/Example Exercise/ExtJS/MultiUpload/WebRoot/upload"; 1378 1379 //System.out.println(mkDir(path)); 1380 1381 System.out.println(getDoPath(path)); 1382 1383 System.out.println(getBracketFileName("a.txt", getDoPath(path))); 1384 1385 System.out.println(getNumberName("a.jpg")); 1386 1387 System.out.println(getNumberName("a.jpg")); 1388 1389 System.out.println(getNewFileName("a", "bbb", "txt")); 1390 1391 System.out.println(getRandomName("a.htm")); 1392 1393 System.out.println(getSuffix("a.jpg")); 1394 1395 System.out.println(getType("a.jpg")); 1396 1397 //List<File> list = getFiles(path); 1398 1399 //List<File> list = getFiles(path, "xml"); 1400 1401 //List<File> list = getFiles(path, typeImages); 1402 1403 //List<File> list = getFiles(path, typeOthers); 1404 1405 //List<File> list = getFiles(path, typeImages, false); 1406 1407 /*List<File> list = getFiles(path, "GIF", true); 1408 1409 for (File f : list) { 1410 1411 System.out.println("Name:" + f.getName()); 1412 1413 System.out.println(f.getAbsolutePath() + "#" + f.getPath()); 1414 1415 }*/ 1416 1417 System.out.println(removeFile("a.txt", path)); 1418 1419 System.out.println("#############################################"); 1420 1421 System.out.println("###" + validTypeByName("a", new String[]{"*"})); 1422 1423 System.out.println("###" + validTypeByName("a.JPG", typeImages)); 1424 1425 System.out.println("###" + validTypeByName("a.JPG", typeImages, false)); 1426 1427 System.out.println(validTypeByPostfix("cals", new String[]{"*", "b"})); 1428 1429 System.out.println(validTypeByPostfix("b", new String[]{"cal", "B"}, false)); 1430 1431 } 1432 1433 }
版权所有,转载请注明出处 本文出自: http://www.cnblogs.com/hoojo/archive/2012/02/10/2345234.html