Java文件操作大全

   1 1.创建文件夹
   2 //import java.io.*;
   3 File myFolderPath = new File(%%1);
   4 try {
   5 if (!myFolderPath.exists())
   6 myFolderPath.mkdir();
   7 }
   8 catch (IOException e) {
   9 System.err.println("新建目录操作出错");
  10 }
  11 
  12 2.创建文件
  13 //import java.io.*;
  14 File myFilePath = new File(%%1);
  15 try {
  16 if (!myFilePath.exists())
  17 myFilePath.createNewFile();
  18 FileWriter resultFile = new FileWriter(myFilePath);
  19 PrintWriter myFile = new PrintWriter(resultFile);
  20 myFile.println(%%2);
  21 myFile.flush();
  22 resultFile.close();
  23 }
  24 catch (IOException e) {
  25 System.err.println("新建文件操作出错");
  26 }
  27 
  28 3.删除文件
  29 //import java.io.*;
  30 File myDelFile = new File(%%1);
  31 try {
  32 if(myDelFile.delete())
  33 {
  34 %%2
  35 }
  36 }
  37 catch (IOException e) {
  38 System.err.println("删除文件操作出错");
  39 }
  40 
  41 4.删除文件夹
  42 /*
  43 import java.io.*;
  44 import java.util.*;
  45 */
  46 LinkedList<String> folderList = new LinkedList<String>();
  47 folderList.add(%%1);
  48 while (folderList.size() > 0) {
  49 File file = new File((String)folderList.poll());
  50 File[] files = file.listFiles();
  51 ArrayList<File> fileList = new ArrayList<File>();
  52 for (int i = 0; i < files.length; i++) {
  53 if (files[i].isDirectory()) {
  54 folderList.add(files[i].getPath());
  55 } else {
  56 fileList.add(files[i]);
  57 }
  58 }
  59 for (File f : fileList) {
  60 f.delete();
  61 }
  62 }
  63 folderList = new LinkedList<String>();
  64 folderList.add(%%1);
  65 while (folderList.size() > 0) {
  66 File file = new File((String)folderList.getLast());
  67 if (file.delete())
  68 folderList.removeLast();
  69 else {
  70 File[] files = file.listFiles();
  71 for (int i = 0; i < files.length; i++) {
  72 folderList.add(files[i].getPath());
  73 }
  74 }
  75 }
  76 
  77 5.删除一个文件下夹所有的文件夹
  78 /*
  79 import java.io.*;
  80 private static LinkedList<String> folderList=null;
  81 */
  82 File delfile=new File(%%1);
  83 File[] files=delfile.listFiles();
  84 for(int i=0;i<files.length;i++){
  85 if(files[i].isDirectory()){
  86 if(!files[i].delete()){
  87 folderList = new LinkedList<String>();
  88 folderList.add(files[i]);
  89 while (folderList.size() > 0) {
  90 File file = new File((String)folderList.poll());
  91 File[] files = file.listFiles();
  92 ArrayList<File> fileList = new ArrayList<File>();
  93 for (int i = 0; i < files.length; i++) {
  94 if (files[i].isDirectory())
  95 folderList.add(files[i].getPath());
  96 else
  97 fileList.add(files[i]);
  98 }
  99 for (File f : fileList)
 100 f.delete();
 101 }
 102 folderList = new LinkedList<String>();
 103 folderList.add(files[i]);
 104 while (folderList.size() > 0) {
 105 File file = new File((String)folderList.getLast());
 106 if (file.delete())
 107 folderList.removeLast();
 108 else {
 109 File[] files = file.listFiles();
 110 for (int i = 0; i < files.length; i++) {
 111 folderList.add(files[i].getPath());
 112 }
 113 }
 114 }
 115 }
 116 }
 117 }
 118 
 119 6.清空文件夹
 120 //import java.io.*;
 121 File delfilefolder=new File(%%1);
 122 if (!delfilefolder.exists() && !delfilefolder.delete()){
 123 LinkedList<String> folderList = new LinkedList<String>();
 124 folderList.add(delfilefolder.getAbsolutePath());
 125 while (folderList.size() > 0) {
 126 File file = new File((String)folderList.poll());
 127 File[] files = file.listFiles();
 128 ArrayList<File> fileList = new ArrayList<File>();
 129 for (int i = 0; i < files.length; i++) {
 130 if (files[i].isDirectory())
 131 folderList.add(files[i].getPath());
 132 else
 133 fileList.add(files[i]);
 134 }
 135 for (File f : fileList)
 136 f.delete();
 137 }
 138 folderList = new LinkedList<String>();
 139 folderList.add(delfilefolder.getAbsolutePath());
 140 while (folderList.size() > 0) {
 141 File file = new File((String)folderList.getLast());
 142 if (file.delete())
 143 folderList.removeLast();
 144 else {
 145 File[] files = file.listFiles();
 146 for (int i = 0; i < files.length; i++) {
 147 folderList.add(files[i].getPath());
 148 }
 149 }
 150 }
 151 }
 152 delfilefolder.mkdir();
 153 
 154 7.读取文件
 155 //import java.io.*;
 156 7.1.操作系统默认编码
 157 FileReader fr=new FileReader(%%1);
 158 BufferedReader br = new BufferedReader();
 159 String %%2=nul;
 160 try {
 161 while ((%%2 = reader.readLine()) != null) {
 162 %%3
 163 }
 164 } catch (IOException e) {
 165 e.printStackTrace();
 166 } finally{
 167 try {
 168 br.close();
 169 fr.close();
 170 } catch (IOException e) {
 171 e.printStackTrace();
 172 }
 173 }
 174 
 175 7.2.UTF-8编码
 176 FileInputStream fis=new FileInputStream(new File(%%1));
 177 InputStreamReader read = new InputStreamReader(fis,"UTF-8");
 178 BufferedReader reader=new BufferedReader(read);
 179 String %%2=null;
 180 try {
 181 while ((%%2 = reader.readLine()) != null) {
 182 %%3
 183 }
 184 } catch (IOException e) {
 185 e.printStackTrace();
 186 } finally{
 187 try {
 188 br.close();
 189 read.close();
 190 fis.close();
 191 } catch (IOException e) {
 192 e.printStackTrace();
 193 }
 194 }
 195 
 196 7.3.分块读取
 197 FileInputStream fis=new FileInputStream(new File(%%1));
 198 byte[] buffer=new byte[10240];
 199 try {
 200 int byteread;
 201 while ((byteread=fis.read(buffer)) != -1) {
 202 String %%2=new String(buffer);
 203 %%3
 204 }
 205 } catch (IOException e) {
 206 e.printStackTrace();
 207 } finally{
 208 try {
 209 read.close();
 210 fis.close();
 211 } catch (IOException e) {
 212 e.printStackTrace();
 213 }
 214 }
 215 
 216 8.写入文件
 217 //import java.io.*;
 218 8.1.操作系统默认编码
 219 try {
 220 FileWriter fw = new FileWriter(%%1);
 221 fw.write(%%2);
 222 fw.flush();
 223 fw.close();
 224 } catch (IOException e) {
 225 e.printStackTrace();
 226 }
 227 
 228 8.2.UTF-8编码
 229 try {
 230 OutputStreamWriter out = new OutputStreamWriter(
 231 new FileOutputStream(%%1),"UTF-8");
 232 out.write(sb.toString());
 233 out.flush();
 234 out.close();
 235 } catch (UnsupportedEncodingException e) {
 236 e.printStackTrace();
 237 } catch (FileNotFoundException e){
 238 e.printStackTrace();
 239 } catch (IOException e){
 240 e.printStackTrace();
 241 }
 242 
 243 9.写入随机文件
 244 //import java.io.*;
 245 try {
 246 RandomAcessFile logFile=new RandomAcessFile(%%1,"rw");
 247 long lg=logFile.length();
 248 logFile.seek(%%2);
 249 logFile.writeByte(%%3);
 250 }catch(IOException ioe){
 251 System.out.println("无法写入文件:"+ioe.getMessage());
 252 }
 253 
 254 10.读取文件属性
 255 //import java.io.*;
 256 // 文件属性的取得
 257 File af = new File(%%1);
 258 if (af.exists()) {
 259 System.out.println(f.getName() + "的属性如下: 文件长度为:" + f.length());
 260 System.out.println(f.isFile() ? "是文件" : "不是文件");
 261 System.out.println(f.isDirectory() ? "是目录" : "不是目录");
 262 System.out.println(f.canRead() ? "可读取" : "不");
 263 System.out.println(f.canWrite() ? "是隐藏文件" : "");
 264 System.out.println("文件夹的最后修改日期为:" + new Date(f.lastModified()));
 265 } else {
 266 System.out.println(f.getName() + "的属性如下:");
 267 System.out.println(f.isFile() ? "是文件" : "不是文件");
 268 System.out.println(f.isDirectory() ? "是目录" : "不是目录");
 269 System.out.println(f.canRead() ? "可读取" : "不");
 270 System.out.println(f.canWrite() ? "是隐藏文件" : "");
 271 System.out.println("文件的最后修改日期为:" + new Date(f.lastModified()));
 272 }
 273 if(f.canRead()){
 274 %%2
 275 }
 276 if(f.canWrite()){
 277 %%3
 278 }
 279 
 280 11.写入属性
 281 //import java.io.*;
 282 File filereadonly=new File(%%1);
 283 try {
 284 boolean %%2=filereadonly.setReadOnly();
 285 }
 286 catch (IOException e) {
 287 System.err.println("拒绝写访问:"+e.printStackTrace());
 288 }
 289 
 290 12.枚举一个文件夹中的所有文件
 291 /*
 292 import java.io.*;
 293 import java.util.*;
 294 */
 295 LinkedList<String> folderList = new LinkedList<String>();
 296 folderList.add(%%1);
 297 while (folderList.size() > 0) {
 298 File file = new File((String)folderList.poll());
 299 File[] files = file.listFiles();
 300 List<File> fileList = new ArrayList<File>();
 301 for (int i = 0; i < files.length; i++) {
 302 if (files[i].isDirectory())
 303 folderList.add(files[i].getPath());
 304 else
 305 fileList.add(files[i]);
 306 }
 307 for (File f : fileList) {
 308 %%2=f.getAbsoluteFile();
 309 %%3
 310 }
 311 }
 312 
 313 13.复制文件夹
 314 /*
 315 import java.io.*;
 316 import java.util.*;
 317 */
 318 LinkedList<String> folderList = new LinkedList<String>();
 319 folderList.add(%%1);
 320 LinkedList<String> folderList2 = new LinkedList<String>();
 321 folderList2.add(%%2+ %%1.substring(%%1.lastIndexOf("\\")));
 322 while (folderList.size() > 0) {
 323 (new File(folderList2.peek())).mkdirs(); // 如果文件夹不存在 则建立新文件夹
 324 File folders = new File(folderList.peek());
 325 String[] file = folders.list();
 326 File temp = null;
 327 try {
 328 for (int i = 0; i < file.length; i++) {
 329 if (folderList.peek().endsWith(File.separator))
 330 temp = new File(folderList.peek() + File.separator
 331 + file[i]);
 332 else
 333 temp = new File(folderList.peek() + File.separator
 334 + file[i]);
 335 if (temp.isFile()) {
 336 FileInputStream input = new FileInputStream(temp);
 337 FileOutputStream output = new FileOutputStream(new File(
 338 folderList2.peek() ,temp.getName().toString()));
 339 byte[] b = new byte[10240];
 340 int len;
 341 while ((len = input.read(b)) != -1)
 342 output.write(b, 0, len);
 343 output.flush();
 344 output.close();
 345 input.close();
 346 }
 347 else if (temp.isDirectory()) {// 如果是子文件夹
 348 for (File f : temp.listFiles()) {
 349 if (f.isDirectory()) {
 350 folderList.add(f.getPath());
 351 folderList2.add(folderList2.peek()
 352 + File.separator + f.getName());
 353 }
 354 else if(f.isFile()) {
 355 FileInputStream input = new FileInputStream(f);
 356 FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());
 357 byte[] b = new byte[10240];
 358 int len;
 359 while ((len = input.read(b)) != -1)
 360 output.write(b, 0, len);
 361 output.flush();
 362 output.close();
 363 input.close();
 364 }
 365 }
 366 }
 367 }
 368 } catch (IOException e) {
 369 System.err.println("复制整个文件夹内容操作出错");
 370 }
 371 folderList.removeFirst();
 372 folderList2.removeFirst();
 373 }
 374 
 375 14.复制一个目录下所有的文件夹到另一个文件夹下
 376 /*
 377 import java.io.*;
 378 import java.util.*;
 379 */
 380 File copyfolders=new File(%%1);
 381 File[] copyfoldersList=copyfolders.listFiles();
 382 for(int k=0;k<copyfoldersList.length;k++){
 383 if(copyfoldersList[k].isDirectory()){
 384 List<String>folderList=new ArrayList<String>();
 385 folderList.add(copyfoldersList[k].getPath());
 386 List<String>folderList2=new ArrayList<String>();
 387 folderList2.add(%%2+"/"+copyfoldersList[k].getName());
 388 for(int j=0;j<folderList.size();j++){
 389 (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹
 390 File folders=new File(folderList.get(j));
 391 String[] file=folders.list();
 392 File temp=null;
 393 try {
 394 for (int i = 0; i < file.length; i++) {
 395 if(folderList.get(j).endsWith(File.separator))
 396 temp=new File(folderList.get(j),file[i]);
 397 else
 398 temp=new File(folderList.get(j),file[i]);
 399 FileInputStream input = new FileInputStream(temp);
 400 if(temp.isFile()){
 401 FileOutputStream output = new FileOutputStream(new File(folderList2.get(j) ,temp.getName()).toString()));
 402 byte[] b = new byte[10240];
 403 while ( (int len = input.read(b)) != -1)
 404 output.write(b, 0, len);
 405 output.flush();
 406 output.close();
 407 input.close();
 408 }
 409 else if(temp.isDirectory()){//如果是子文件夹
 410 for (File f : temp.listFiles()) {
 411 if (f.isDirectory()) {
 412 folderList.add(f.getPath());
 413 folderList2.add(folderList2.peek()
 414 + File.separator + f.getName());
 415 }
 416 else if(f.isFile()) {
 417 FileInputStream input = new FileInputStream(f);
 418 FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());
 419 byte[] b = new byte[10240];
 420 int len;
 421 while ((len = input.read(b)) != -1) {
 422 output.write(b, 0, len);
 423 }
 424 output.flush();
 425 output.close();
 426 input.close();
 427 }
 428 }
 429 }
 430 }
 431 }
 432 }
 433 catch (IOException e) {
 434 System.err.println("复制整个文件夹内容操作出错");
 435 }
 436 }
 437 }
 438 }
 439 
 440 15.移动文件夹
 441 /*
 442 import java.io.*;
 443 import java.util.*;
 444 */
 445 LinkedList<String> folderList = new LinkedList<String>();
 446 folderList.add(%%1);
 447 LinkedList<String> folderList2 = new LinkedList<String>();
 448 folderList2.add(%%2 + %%1.substring(%%1.lastIndexOf("\\")));
 449 while (folderList.size() > 0) {
 450 (new File(folderList2.peek())).mkdirs(); // 如果文件夹不存在 则建立新文件夹
 451 File folders = new File(folderList.peek());
 452 String[] file = folders.list();
 453 File temp = null;
 454 try {
 455 for (int i = 0; i < file.length; i++) {
 456 if (folderList.peek().endsWith(File.separator)) {
 457 temp = new File(folderList.peek() , file[i]);
 458 } else {
 459 temp = new File(folderList.peek() ,file[i]);
 460 }
 461 if (temp.isFile()) {
 462 FileInputStream input = new FileInputStream(temp);
 463 FileOutputStream output = new FileOutputStream(
 464 folderList2.peek() + File.separator
 465 + (temp.getName()).toString());
 466 byte[] b = new byte[10240];
 467 while ((int len = input.read(b)) != -1)
 468 output.write(b, 0, len);
 469 output.flush();
 470 output.close();
 471 input.close();
 472 if (!temp.delete())
 473 //删除单个文件操作出错
 474 }
 475 else if (temp.isDirectory()) {// 如果是子文件夹
 476 for (File f : temp.listFiles()) {
 477 if (f.isDirectory()) {
 478 folderList.add(f.getPath());
 479 folderList2.add(folderList2.peek()
 480 + File.separator + f.getName());
 481 }
 482 else if (f.isFile()) {
 483 FileInputStream input = new FileInputStream(f);
 484 FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());
 485 byte[] b = new byte[10240];
 486 while ((int len = input.read(b)) != -1)
 487 output.write(b, 0, len);
 488 output.flush();
 489 output.close();
 490 input.close();
 491 if (!temp.delete())
 492 //删除单个文件操作出错
 493 }
 494 }
 495 }
 496 }
 497 } catch (IOException e) {
 498 //复制整个文件夹内容操作出错
 499 e.printStackTrace();
 500 }
 501 folderList.removeFirst();
 502 folderList2.removeFirst();
 503 
 504 }
 505 File f = new File(%%1);
 506 if (!f.delete()) {
 507 for (File file : f.listFiles()) {
 508 if (file.list().length == 0)
 509 file.delete();
 510 }
 511 }
 512 
 513 16.移动一个目录下所有的文件夹到另一个目录下
 514 /*
 515 import java.io.*;
 516 import java.util.*;
 517 */
 518 File movefolders=new File(%%1);
 519 File[] movefoldersList=movefolders.listFiles();
 520 for(int k=0;k<movefoldersList.length;k++){
 521 if(movefoldersList[k].isDirectory()){
 522 List<String>folderList=new ArrayList<String>();
 523 folderList.add(movefoldersList[k].getPath());
 524 List<String>folderList2=new ArrayList<String>();
 525 folderList2.add(%%2+File.separator+movefoldersList[k].getName());
 526 for(int j=0;j<folderList.size();j++){
 527 (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹
 528 File folders=new File(folderList.get(j));
 529 String[] file=folders.list();
 530 File temp=null;
 531 try {
 532 for (int i = 0; i < file.length; i++) {
 533 if(folderList.get(j).endsWith(File.separator))
 534 temp=new File(folderList.get(j),file[i]);
 535 else
 536 temp=new File(folderList.get(j),file[i]);
 537 FileInputStream input = new FileInputStream(temp);
 538 if(temp.isFile()){
 539 FileInputStream input = new FileInputStream(temp);
 540 FileOutputStream output = new FileOutputStream(new File(folderList2.get(j),temp.getName().toString()));
 541 byte[] b = new byte[10240];
 542 while ( (int len = input.read(b)) != -1)
 543 output.write(b, 0, len);
 544 output.flush();
 545 output.close();
 546 input.close();
 547 temp.delete();
 548 }
 549 else if(temp.isDirectory()){//如果是子文件夹
 550 for (File f : temp.listFiles()) {
 551 if (f.isDirectory()) {
 552 folderList.add(f.getPath());
 553 folderList2.add(folderList2.peek()
 554 + File.separator + f.getName());
 555 }
 556 else if (f.isFile()) {
 557 FileInputStream input = new FileInputStream(f);
 558 FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());
 559 byte[] b = new byte[10240];
 560 while ((int len = input.read(b)) != -1)
 561 output.write(b, 0, len);
 562 output.flush();
 563 output.close();
 564 input.close();
 565 if (!temp.delete())
 566 //删除单个文件操作出错
 567 }
 568 }
 569 }
 570 }
 571 catch (IOException e) {
 572 //复制整个文件夹内容操作出错
 573 e.printStackTrace();
 574 }
 575 }
 576 movefoldersList[k].delete();
 577 }
 578 }
 579 
 580 17.以一个文件夹的框架在另一个目录创建文件夹和空文件
 581 /*
 582 import java.io.*;
 583 import java.util.*;
 584 */
 585 boolean b=false;//不创建空文件
 586 List<String>folderList=new ArrayList<String>();
 587 folderList.add(%%1);
 588 List<String>folderList2=new ArrayList<String>();
 589 folderList2.add(%%2);
 590 for(int j=0;j<folderList.size();j++){
 591 (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹
 592 File folders=new File(folderList.get(j));
 593 String[] file=folders.list();
 594 File temp=null;
 595 try {
 596 for (int i = 0; i < file.length; i++) {
 597 if(folderList.get(j).endsWith(File.separator))
 598 temp=new File(folderList.get(j),file[i]);
 599 else
 600 temp=new File(folderList.get(j),file[i]);
 601 if(temp.isFile() && b)
 602 temp.createNewFile();
 603 else if(temp.isDirectory()){//如果是子文件夹
 604 folderList.add(folderList.get(j)+File.separator+file[i]);
 605 folderList2.add(folderList2.get(j)+File.separator+file[i]);
 606 }
 607 }
 608 }
 609 catch (IOException e) {
 610 //复制整个文件夹内容操作出错
 611 e.printStackTrace();
 612 }
 613 }
 614 
 615 18.复制文件
 616 //import java.io.*;
 617 File oldfile = new File(%%1);
 618 try {
 619 if (oldfile.exists()) { //文件存在时
 620 FileInputStream inStream = new FileInputStream(oldfile); //读入原文件
 621 FileOutputStream fs = new FileOutputStream(new File(%%2,oldfile.getName()));
 622 byte[] buffer = new byte[10240];
 623 int byteread;
 624 while ( (byteread = inStream.read(buffer)) != -1)
 625 fs.write(buffer, 0, byteread);
 626 inStream.close();
 627 }
 628 }
 629 catch (IOException e) {
 630 //复制单个文件操作出错
 631 e.printStackTrace();
 632 }
 633 
 634 19.复制一个目录下所有的文件到另一个目录
 635 //import java.io.*;
 636 File copyfiles=new File(%%1);
 637 File targetfiles = new File(%%2);
 638 if (!targetfiles.exists())
 639 targetfiles.mkdirs();
 640 File[] files=copyfiles.listFiles();
 641 for(int i=0;i<files.length;i++){
 642 if(files[i].isFile()){
 643 try {
 644 InputStream inStream = new FileInputStream(files[i]); //读入原文件
 645 FileOutputStream fs = new FileOutputStream(new File(%%2,files[i].getName()));
 646 byte[] buffer = new byte[10240];
 647 int byteread;
 648 while ( (byteread = inStream.read(buffer)) != -1)
 649 fs.write(buffer, 0, byteread);
 650 inStream.close();
 651 } catch (IOException e) {
 652 //复制单个文件操作出错
 653 e.printStackTrace();
 654 }
 655 }
 656 }
 657 
 658 20.提取扩展名
 659 String %%2=%%1.substring(%%1.lastIndexOf('.'));
 660 
 661 21.提取文件名
 662 String %%2=%%1.substring(%%1.lastIndexOf("\\")+1);
 663 
 664 22.提取文件路径
 665 String %%2=%%1.substring(0,%%1.lastIndexOf("\\"));
 666 
 667 23.替换扩展名
 668 //import java.io.*;
 669 File replaceExt=new File(%%1);
 670 replaceExt.renameTo(replaceExt.getName().split(".")[0]+"."+%%2);
 671 
 672 24.追加路径
 673 final String path=%%1.endsWith("\\")?%%1:%%1+"\\";
 674 %%3=path+%%2;
 675 
 676 25.移动文件
 677 //import java.io.*;
 678 File oldfile = new File(%%1);
 679 try {
 680 if (oldfile.exists()) { //文件存在时
 681 InputStream inStream = new FileInputStream(oldfile); //读入原文件
 682 FileOutputStream fs = new FileOutputStream(new File(%%2,oldfile.getName()));
 683 byte[] buffer = new byte[10240];
 684 int byteread;
 685 while ( (byteread = inStream.read(buffer)) != -1)
 686 fs.write(buffer, 0, byteread);
 687 inStream.close();
 688 oldfile.delete();
 689 }
 690 }
 691 catch (IOException e) {
 692 //复制单个文件操作出错
 693 e.printStackTrace();
 694 }
 695 
 696 26.移动一个目录下所有文件到另一个目录
 697 //import java.io.*;
 698 File movefile=new File(%%1);
 699 File[] movefiles=movefile.listFiles();
 700 for(int i=0;i<movefiles.length;i++){
 701 if(movefiles[i].isFile()){
 702 File oldfile = new File(movefiles[i]);
 703 try {
 704 if (oldfile.exists()) { //文件存在时
 705 InputStream inStream = new FileInputStream(oldfile); //读入原文件
 706 FileOutputStream fs = new FileOutputStream(new File(%%2,oldfile.getName()));
 707 byte[] buffer = new byte[10240];
 708 int byteread;
 709 while ( (byteread = inStream.read(buffer)) != -1)
 710 fs.write(buffer, 0, byteread);
 711 inStream.close();
 712 oldfile.delete();
 713 }
 714 }
 715 catch (IOException e) {
 716 //复制单个文件操作出错
 717 e.printStackTrace();
 718 }
 719 }
 720 }
 721 
 722 27.指定目录下搜索文件
 723 //import java.io.*;
 724 private static final String filter=%%1; //"*.*"
 725 private static void doSearch(String path){
 726 File file = new File(path);
 727 if(file.exists()) {
 728 if(file.isDirectory()) {
 729 File[] fileArray = file.listFiles();
 730 for(File f:fileArray) {
 731 if(f.isDirectory()) {
 732 doSearch(f.getPath());
 733 } else {
 734 if(f.getName().indexOf(filter) >= 0) {
 735 //f.getPath()
 736 }
 737 }
 738 //f.getPath()
 739 }
 740 //"The numbers of files had been found:" + countFiles
 741 } else {
 742 //"Couldn't open the path!"
 743 }
 744 } else {
 745 System.err.println("目录不存在");
 746 }
 747 }
 748 doSearch(%%1);
 749 
 750 28.打开对话框
 751 /*
 752 import java.io.*;
 753 import javax.swing.*;
 754 */
 755 JFileChooser Jfc = new JFileChooser(); //建立选择档案对话方块盒 Jfc
 756 Jfc.showDialog(null, %%1);
 757 if (Jfc.getSelectedFile() != null) {
 758 File %%2 = Jfc.getSelectedFile();
 759 }
 760 
 761 29.文件分割
 762 //import java.io.*;
 763 try {
 764 File f=new File(%%1);
 765 FileInputStream fileInputStream = new FileInputStream(f);
 766 byte[] buffer = new byte[fileInputStream.available()];
 767 FileInputStream.read(buffer);
 768 fileInputStream.close();
 769 String strFileName = f.getName();
 770 FileOutputStream fileOutputStream = new FileOutputStream(new File(%%2+"\\"+ strFileName + "1"));
 771 fileOutputStream.write(buffer,0,buffer.length/2);
 772 fileOutputStream.close();
 773 fileOutputStream = new FileOutputStream(new File(%%2+"\\"+ strFileName + "2"));
 774 fileOutputStream.write(buffer, buffer.length/2, buffer.length-buffer.length/2);
 775 fileOutputStream.close();
 776 } catch (ArrayIndexOutOfBoundsException e) {
 777 e.printStackTrace();
 778 }
 779 catch(IOException e){
 780 e.printStackTrace();
 781 }
 782 
 783 30.文件合并
 784 //import java.io.*;
 785 String strFileName = %%1.substring(%%1.LastIndexOf("\\") + 1);
 786 try {
 787 FileInputStream fileInputStream1 = new FileInputStream(new File(%%2 + strFileName + "1"));
 788 FileInputStream fileInputStream2 = new FileInputStream(new File(%%2 + strFileName + "2"));
 789 byte[] buffer = new byte[fileInputStream1.available()+fileInputStream2.available()];
 790 FileInputStream.read(buffer, 0, fileInputStream1.available());
 791 FileInputStream2.read(buffer, fileInputStream1.available(), fileInputStream2.available());
 792 fileInputStream.close();
 793 fileInputStream2.close();
 794 FileOutputStream fileOutputStream = new FileOutputStream(new File(%%2+"\\"+ strFileName));
 795 fileOutputStream.write(buffer,0,buffer.length);
 796 fileOutputStream.close();
 797 }
 798 catch(IOException e){
 799 e.printStackTrace();
 800 }
 801 
 802 31.文件简单加密
 803 /*
 804 import java.io.*;
 805 import javax.swing.*;
 806 private static final String CharSet = "0123456789ABCDEF";
 807 */
 808 JFileChooser jfc = new JFileChooser();
 809 JFileChooser jfc2 = new JFileChooser();
 810 jfc.showDialog(null, "请选择要加密编码的文件");
 811 jfc2.showDialog(null, "请选择要输出的文件名");
 812 if (jfc.getSelectedFile() != null && jfc2.getSelectedFile() != null) {
 813 File oldfile = jfc.getSelectedFile();
 814 FileInputStream inStream = null;
 815 FileWriter fw = null;
 816 try {
 817 if (oldfile.exists()) {
 818 inStream = new FileInputStream(oldfile);
 819 fw = new FileWriter(jfc2.getSelectedFile());
 820 byte[] sRead = new byte[10240];
 821 int byteread;
 822 while ((byteread = inStream.read(sRead)) != -1) {
 823 StringBuilder smi = new StringBuilder(byteread * 2);
 824 int ka = 3, kb = 5, kc = 2, kd = 7, js = 0;
 825 if (byteread % 2 != 0)
 826 js = 1;
 827 for (int i = 0; i < byteread - 1; i += 2) {
 828 char c1 = (char) sRead[i];
 829 char c2 = (char) sRead[i + 1];
 830 int tmp = ka * c1 + kc * c2;
 831 while (tmp < 0)
 832 tmp += 1024;
 833 byte s1 = (byte) (tmp % 1024);
 834 int js1 = (int) s1 >> 4 & 0xf;
 835 smi.append(CharSet.substring(js1, js1 + 1));
 836 int ks1 = s1 & 0xf;
 837 smi.append(CharSet.substring(ks1, ks1 + 1));
 838 tmp = kb * c1 + kd * c2;
 839 while (tmp < 0)
 840 tmp += 1024;
 841 byte s2 = (byte) (tmp % 1024);
 842 int js2 = (int) s2 >> 4 & 0xf;
 843 smi.append(CharSet.substring(js2, js2 + 1));
 844 int ks2 = s2 & 0xf;
 845 smi.append(CharSet.substring(ks2, ks2 + 1));
 846 }
 847 if (js == 1) {
 848 byte s3 = (byte) ((sRead[byteread - 1] - 4) % 1024);
 849 int js3 = (int) s3 >> 4 & 0xf;
 850 smi.append(CharSet.substring(js3, js3 + 1));
 851 int ks3 = (int) s3 & 0xf;
 852 smi.append(CharSet.substring(ks3, ks3 + 1));
 853 }
 854 fw.write(smi.toString());
 855 }
 856 fw.flush();
 857 }
 858 } catch (IOException e) {
 859 e.printStackTrace();
 860 } finally {
 861 try {
 862 fw.close();
 863 inStream.close();
 864 } catch (IOException e) {
 865 e.printStackTrace();
 866 }
 867 }
 868 }
 869 
 870 32.文件简单解密
 871 /*
 872 import java.io.*;
 873 import javax.swing.*;
 874 private static final String CharSet = "0123456789ABCDEF";
 875 */
 876 private static int niyuan(int m, int n) {
 877 int a, b, c, d, t, yu = 0, shang, mod;
 878 a = m;
 879 b = n;
 880 mod = a;
 881 c = 0;
 882 d = 1;
 883 while (b < 0)
 884 b += a;
 885 if (a % b == 0 || b % 2 == 0)
 886 return 0;
 887 while (b != 1) {
 888 t = a % b;
 889 shang = a / b;
 890 a = b;
 891 b = t;
 892 yu = c - shang * d;
 893 c = d;
 894 d = yu;
 895 }
 896 if (yu < 0)
 897 yu += mod;
 898 return yu;
 899 }
 900 JFileChooser jfc = new JFileChooser();
 901 JFileChooser jfc2 = new JFileChooser();
 902 jfc.showDialog(null, "请选择要解码解密的文件");
 903 jfc2.showDialog(null, "请选择要输出的文件名");
 904 if (jfc.getSelectedFile() != null && jfc2.getSelectedFile() != null) {
 905 FileOutputStream fw = null;
 906 try {
 907 FileInputStream fis = new FileInputStream(jfc.getSelectedFile());
 908 fw = new FileOutputStream(jfc2
 909 .getSelectedFile());
 910 byte[] buffer = new byte[20480];
 911 int ka = 3, kb = 5, kc = 2, kd = 7, js = 0, tmp;
 912 int aany, ddny;
 913 int r00 = ka * kc * kd;
 914 int r01 = -ka * kb * kc;
 915 int r10 = -kb * kc * kc;
 916 int r11 = ka * kb * kc;
 917 int x00 = ka * ka * kc * kd - ka * kb * kc * kc;
 918 int x11 = ka * kb * kc * kd - kb * kb * kc * kc;
 919 while (x00 % 2 == 0) {
 920 x00 /= 2;
 921 r00 /= 2;
 922 r01 /= 2;
 923 }
 924 while (x11 % 2 == 0) {
 925 x11 /= 2;
 926 r10 /= 2;
 927 r11 /= 2;
 928 }
 929 aany = x00;
 930 ddny = x11;
 931 if (niyuan(1024, aany) != 0 && niyuan(1024, ddny) != 0) {
 932 int kn00 = r00 * niyuan(1024, x00);
 933 int kn01 = r01 * niyuan(1024, x00);
 934 int kn10 = r10 * niyuan(1024, x11);
 935 int kn11 = r11 * niyuan(1024, x11);
 936 ka = kn00;
 937 kb = kn01;
 938 kc = kn10;
 939 kd = kn11;
 940 } else {
 941 JOptionPane.showMessageDialog(null, "无逆矩阵!");
 942 System.exit(0);
 943 }
 944 while (ka < 0)
 945 ka += 1024;
 946 while (kb < 0)
 947 kb += 1024;
 948 while (kc < 0)
 949 kc += 1024;
 950 while (kd < 0)
 951 kd += 1024;
 952 ka %= 1024;
 953 kb %= 1024;
 954 kc %= 1024;
 955 kd %= 1024;
 956 try {
 957 int byteread;
 958 while ((byteread = fis.read(buffer)) != -1) {
 959 int nLen = byteread / 2;
 960 byte[] sming = new byte[nLen];
 961 String chs=new String(buffer,"US-ASCII");
 962 for (int i = 0; i < nLen; i++) {
 963 byte bTmp;
 964 if (byteread < 2)
 965 bTmp = -1;
 966 bTmp = (byte) (CharSet.indexOf(chs.substring(i * 2,i * 2+1)) * 16 + CharSet
 967 .indexOf(chs.substring(i * 2 + 1,i * 2 + 2)));
 968 sming[i] = bTmp;
 969 }
 970 if (nLen % 2 != 0)
 971 js = 1;
 972 for (int i = 0; i < nLen - 1; i += 2) {
 973 char c1 = (char) sming[i];
 974 char c2 = (char) sming[i + 1];
 975 tmp = ka * c1 + kc * c2;
 976 while (tmp < 0)
 977 tmp += 1024;
 978 char s1 = (char) (tmp % 1024);
 979 fw.write(s1);
 980 tmp = kb * c1 + kd * c2;
 981 while (tmp < 0)
 982 tmp += 1024;
 983 char s2 = (char) (tmp % 1024);
 984 fw.write(s2);
 985 }
 986 if (js == 1) {
 987 char c3 = (char) ((sming[nLen - 1] - 4) % 1024);
 988 fw.write(c3);
 989 }
 990 }
 991 fw.flush();
 992 } catch (IOException e) {
 993 e.printStackTrace();
 994 } finally {
 995 try {
 996 fis.close();
 997 fw.close();
 998 } catch (IOException e) {
 999 e.printStackTrace();
1000 }
1001 }
1002 } catch (FileNotFoundException e1) {
1003 // TODO Auto-generated catch block
1004 e1.printStackTrace();
1005 }
1006 }
1007 
1008 33.读取ini文件属性
1009 /*
1010 import java.io.*;
1011 import java.util.*;
1012 import java.util.regex.*;
1013 private static HashMap configMap=null;
1014 private static FileReader fileReader = null;
1015 */
1016 private static boolean readIni() {
1017 if (configMap == null) {
1018 configMap = new HashMap<String, ArrayList>();
1019 String strLine = null;
1020 String currentNode = null;
1021 String previousNode = null;
1022 ArrayList<Properties> vec = new ArrayList<Properties>();
1023 int row = 0;
1024 BufferedReader bufferedReader = new BufferedReader(fileReader);
1025 try {
1026 while ((strLine = bufferedReader.readLine()) != null) {
1027 String oneLine = strLine.trim();
1028 if (oneLine.length() >= 1) {
1029 Pattern p = Pattern.compile("\\[\\s*.*\\s*\\]");
1030 int nodelen = oneLine.split("[;]").length;
1031 String[] strArray1 = new String[4];
1032 if (nodelen == 1) {
1033 oneLine = oneLine.split("[;]")[0].trim();
1034 } else if (nodelen == 2) {
1035 strArray1[3] = oneLine.split("[;]")[1].trim();
1036 oneLine = oneLine.split("[;]")[0].trim();
1037 }
1038 Matcher m = p.matcher(oneLine);
1039 if (m.matches()) {
1040 strArray1[0] = "@Node";
1041 strArray1[1] = oneLine;
1042 strArray1[2] = "";
1043 } else {
1044 int keylen = oneLine.split("=").length;
1045 if (keylen == 1) {
1046 strArray1[0] = "@Key";
1047 strArray1[1] = oneLine.split("=")[0];
1048 strArray1[2] = "";
1049 } else if (keylen == 2) {
1050 strArray1[0] = "@Key";
1051 strArray1[1] = oneLine.split("=")[0];
1052 strArray1[2] = oneLine.split("=")[1];
1053 } else {
1054 strArray1[0] = "@ElementError";
1055 strArray1[1] = "";
1056 strArray1[2] = "";
1057 strArray1[3] = "";
1058 }
1059 }
1060 if (strArray1[0].equals("@Node")) {
1061 previousNode = currentNode;
1062 currentNode = strArray1[1];
1063 if (row > 0) {
1064 configMap.put(previousNode, (ArrayList)vec.clone());
1065 vec.clear();
1066 row = 0;
1067 }
1068 } else if (strArray1[0].equals("@Key") && row == 0) {
1069 Properties ht = new Properties();
1070 ht.setProperty(strArray1[1], strArray1[2]);
1071 vec.add(ht);
1072 row++;
1073 } else if (strArray1[0].equals("@Key") && row > 0) {
1074 Properties ht2 = new Properties();
1075 ht2.put(strArray1[1], strArray1[2]);
1076 vec.add(ht2);
1077 row++;
1078 }
1079 }
1080 }
1081 configMap.put(currentNode, (ArrayList)vec.clone());
1082 } catch (FileNotFoundException e) {
1083 configMap = null;
1084 e.printStackTrace();
1085 return false;
1086 } catch (IOException e) {
1087 configMap = null;
1088 e.printStackTrace();
1089 return false;
1090 }
1091 }
1092 return true;
1093 }
1094 try {
1095 fileReader = new FileReader(%%1); //"Setup.ini"
1096 } catch (FileNotFoundException e1) {
1097 e1.printStackTrace();
1098 }
1099 if (readIni()) {
1100 ArrayList<Properties> li = null;
1101 li = (ArrayList<Properties>) configMap.get(%%2); //"[DataSource]"
1102 for (Properties pro : li) {
1103 if(pro.containsKey(%%3))
1104 %%4=pro.getProperty(%%3);
1105 }
1106 }
1107 try {
1108 fileReader.close();
1109 } catch (IOException e) {
1110 e.printStackTrace();
1111 }
1112 
1113 34.合并一个目录下所有的文件
1114 //import java.io.*;
1115 File combinefiles=new File(%%1);
1116 File[] files=combinefiles.listFiles();
1117 FileOutputStream fs;
1118 try {
1119 fs=new FileOutputStream(new File(%%2));
1120 }
1121 catch(IOException e){
1122 e.printStackTrace();
1123 }
1124 for(int i=0;i<files.length;i++){
1125 if(files[i].isFile()){
1126 try {
1127 FileInputStream inStream=new FileInputStream(files[i]);
1128 byte[] buffer = new byte[10240];
1129 int byteread;
1130 while((byteread=inStream.read(buffer))!=-1)
1131 fs.write(buffer,0,byteread);
1132 inStream.close();
1133 }
1134 catch(Exception e){
1135 //复制文件出错
1136 e.printStackTrace();
1137 }
1138 }
1139 }
1140 try {
1141 fs.close();
1142 }
1143 catch(IOException e){
1144 e.printStackTrace();
1145 }
1146 
1147 35.写入ini文件属性
1148 /*
1149 import java.io.*;
1150 import java.util.*;
1151 import java.util.regex.*;
1152 private static HashMap configMap=null;
1153 */
1154 if (readIni()) {
1155 ArrayList<Properties> li = null;
1156 try {
1157 FileWriter fw = new FileWriter(%%1);
1158 li = (ArrayList<Properties>) configMap.get(%%2); //"[DataSource]"
1159 fw.write("%%2\r\n");
1160 for (Properties pro : li) {
1161 if (pro.containsKey(%%3)) //"ip"
1162 fw.write("%%3=" + %%6 + "\r\n");
1163 }
1164 fw.flush();
1165 fw.close();
1166 } catch (IOException e) {
1167 e.printStackTrace();
1168 }
1169 }
1170 
1171 36.获得当前路径
1172 String %%1=getClass().getResource("/").getPath();
1173 //String %%1=System.getProperty("user.dir");
1174 
1175 37.读取XML数据库
1176 /*
1177 import java.io.*;
1178 import javax.xml.parsers.*;
1179 import org.w3c.dom.*;
1180 private static Document document;
1181 private static Element node;
1182 */
1183 File xml_file = new File(%%1);
1184 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
1185 try {
1186 DocumentBuilder builder = factory.newDocumentBuilder();
1187 document = builder.parse(xml_file);
1188 } catch (Exception e) {
1189 e.printStackTrace();
1190 }
1191 String subNodeTag = %%2;
1192 Element rootNode = document.getDocumentElement();
1193 //%%2="Product" //%%4="id" //%%6="port"
1194 //%%3="Name" //%%5="001"
1195 NodeList nlist = rootNode.getElementsByTagName(subNodeTag);
1196 int len = nlist.getLength();
1197 for (int i = 0; i < len; i++) {
1198 node = nlist.item(i);
1199 String getNodeAttrValue = null;
1200 NamedNodeMap attrList = node.getAttributes();
1201 for (int j = 0; j < attrList.getLength(); j++) {
1202 if (attrList.item(j).getNodeName().equals(%%4)) {
1203 getNodeAttrValue = attrList.item(j).getNodeValue();
1204 break;
1205 }
1206 }
1207 if (getNodeAttrValue.equals(%%5)) {
1208 nlist = node.getChildNodes();
1209 String %%9=((Element) node).getElementsByTagName(%%3).item(0)
1210 .getFirstChild().getNodeValue();
1211 break;
1212 }
1213 }
1214 
1215 38.写入XML数据库
1216 /*
1217 import java.io.*;
1218 import javax.xml.parsers.*;
1219 import org.w3c.dom.*;
1220 import javax.xml.transform.*;
1221 import javax.xml.transform.dom.*;
1222 import javax.xml.transform.stream.*;
1223 private Document document;
1224 private Element node;
1225 */
1226 File xml_file = new File(%%1);
1227 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
1228 try {
1229 DocumentBuilder builder = factory.newDocumentBuilder();
1230 document = builder.parse(xml_file);
1231 } catch (Exception e) {
1232 e.printStackTrace();
1233 }
1234 String subNodeTag = %%2;
1235 Element rootNode = document.getDocumentElement();
1236 // %%2="Product" //%%4="pid" //%%6="author"
1237 // %%3="Name" //%%5="price"
1238 NodeList nlist = rootNode.getElementsByTagName(subNodeTag);
1239 String ss = null;
1240 int len = nlist.getLength();
1241 for (int i = 0; i < len; i++) {
1242 node = (Element) nlist.item(i);
1243 //node.setAttribute(%%4, "0"+String.valueOf(i)); //ID格式化
1244 String getNodeAttrValue = null;
1245 NamedNodeMap attrList = node.getAttributes();
1246 for (int j = 0; j < attrList.getLength(); j++) {
1247 if (attrList.item(j).getNodeName().equals(%%4)) {
1248 getNodeAttrValue = attrList.item(j).getNodeValue();
1249 break;
1250 }
1251 }
1252 if (getNodeAttrValue.equals("001")) {
1253 nlist = node.getChildNodes();
1254 ss = ((Element) node).getElementsByTagName(%%3).item(0)
1255 .getFirstChild().getNodeValue();
1256 ss = ((Element) node).getElementsByTagName(%%6).item(0)
1257 .getFirstChild().getNodeValue();
1258 ss = ((Element) node).getElementsByTagName(%%5).item(0)
1259 .getFirstChild().getNodeValue();
1260 ((Element) node).getElementsByTagName(%%3).item(0)
1261 .getFirstChild().setTextContent(%%7);
1262 ((Element) node).getElementsByTagName(%%6).item(0)
1263 .getFirstChild().setTextContent(%%8);
1264 ((Element) node).getElementsByTagName(%%5).item(0)
1265 .getFirstChild().setTextContent(%%9);
1266 break;
1267 }
1268 }
1269 if (ss == null) {
1270 node = document.createElement(%%2);
1271 node.setAttribute(%%4, String.valueOf(nlist.getLength() + 1));
1272 node.appendChild(document.createTextNode("\n"));
1273 Element server = document.createElement(%%3);
1274 server.appendChild(document.createTextNode(%%7));
1275 node.appendChild(server);
1276 Element ipNode = document.createElement(%%6);
1277 ipNode.appendChild(document.createTextNode(%%8));
1278 node.appendChild(ipNode);
1279 node.appendChild(document.createTextNode("\n"));
1280 Element port = document.createElement(%%5);
1281 port.appendChild(document.createTextNode(%%9));
1282 node.appendChild(port);
1283 node.appendChild(document.createTextNode("\n"));
1284 rootNode.appendChild(node);
1285 }
1286 TransformerFactory tFactory = TransformerFactory.newInstance();
1287 Transformer transformer = null;
1288 try {
1289 transformer = tFactory.newTransformer();
1290 DOMSource source = new DOMSource(document);
1291 StreamResult result = new StreamResult(xml_file);
1292 transformer.transform(source, result);
1293 } catch (IOException e) {
1294 e.printStackTrace();
1295 }
1296 
1297 39.ZIP压缩文件
1298 /*
1299 import java.io.*;
1300 import java.util.zip.*;
1301 */
1302 //创建文件输入流对象
1303 FileInputStream fis=new FileInputStream(%%1);
1304 //创建文件输出流对象
1305 FileOutputStream fos=new FileOutputStream(%%2);
1306 //创建ZIP数据输出流对象
1307 ZipOutputStream zipOut=new ZipOutputStream(fos);
1308 //创建指向压缩原始文件的入口
1309 ZipEntry entry=new ZipEntry(args[0]);
1310 try {
1311 zipOut.putNextEntry(entry);
1312 //向压缩文件中输出数据
1313 int nNumber;
1314 byte[] buffer=new byte[1024];
1315 while((nNumber=fis.read(buffer))!=-1)
1316 zipOut.write(buffer,0,nNumber);
1317 //关闭创建的流对象
1318 zipOut.close();
1319 fos.close();
1320 fis.close();
1321 }
1322 catch(IOException e)
1323 {
1324 e.printStackTrace();
1325 }
1326 
1327 40.ZIP解压缩
1328 /*
1329 import java.io.*;
1330 import java.util.zip.*;
1331 */
1332 //创建文件输入流对象实例
1333 FileInputStream fis=new FileInputStream(%%1);
1334 //创建ZIP压缩格式输入流对象实例
1335 ZipInputStream zipin=new ZipInputStream(fis);
1336 //创建文件输出流对象实例
1337 FileOutputStream fos=new FileOutputStream(%%2);
1338 //获取Entry对象实例
1339 ZipEntry entry=zipin.getNextEntry();
1340 byte[] buffer=new byte[1024];
1341 int nNumber;
1342 try{
1343 while((nNumber=zipin.read(buffer,0,buffer.length))!=-1)
1344 fos.write(buffer,0,nNumber);
1345 //关闭文件流对象
1346 zipin.close();
1347 fos.close();
1348 fis.close();
1349 }
1350 catch(IOException e) {
1351 e.printStackTrace();
1352 }
1353 
1354 41.获得应用程序完整路径
1355 String %%1=System.getProperty("user.dir");
1356 
1357 42.递归删除目录中的文件
1358 /*
1359 import java.io.*;
1360 import java.util.*;
1361 */
1362 ArrayList<String> folderList = new ArrayList<String>();
1363 folderList.add(%%1);
1364 for (int j = 0; j < folderList.size(); j++) {
1365 File file = new File(folderList.get(j));
1366 File[] files = file.listFiles();
1367 ArrayList<File> fileList = new ArrayList<File>();
1368 for (int i = 0; i < files.length; i++) {
1369 if (files[i].isDirectory()) {
1370 folderList.add(files[i].getPath());
1371 } else {
1372 fileList.add(files[i]);
1373 }
1374 }
1375 for (File f : fileList) {
1376 f.delete();
1377 }
1378 }
1379 
1380 43.ZIP压缩文件夹
1381 /*
1382 import java.io.*;
1383 import java.util.*;
1384 import java.util.zip.*;
1385 */
1386 public static String zipFileProcess(ArrayList outputZipFileNameList, String outputZipNameAndPath) {
1387 ArrayList fileNames = new ArrayList();
1388 ArrayList files = new ArrayList();
1389 FileOutputStream fileOut = null;
1390 ZipOutputStream outputStream = null;
1391 FileInputStream fileIn = null;
1392 StringBuffer sb = new StringBuffer(outputZipNameAndPath);
1393 // FileInputStream fileIn =null;
1394 try {
1395 if (outputZipNameAndPath.indexOf(".zip") != -1) {
1396 outputZipNameAndPath = outputZipNameAndPath;
1397 } else {
1398 sb.append(".zip");
1399 outputZipNameAndPath = sb.toString();
1400 }
1401 fileOut = new FileOutputStream(outputZipNameAndPath);
1402 outputStream = new ZipOutputStream(fileOut);
1403 int outputZipFileNameListSize = 0;
1404 if (outputZipFileNameList != null) {
1405 outputZipFileNameListSize = outputZipFileNameList.size();
1406 }
1407 for (int i = 0; i < outputZipFileNameListSize; i++) {
1408 File rootFile = new File(outputZipFileNameList.get(i).toString());
1409 listFile(rootFile, fileNames, files, "");
1410 }
1411 for (int loop = 0; loop < files.size(); loop++) {
1412 fileIn = new FileInputStream((File) files.get(loop));
1413 outputStream.putNextEntry(new ZipEntry((String) fileNames.get(loop)));
1414 byte[] buffer = new byte[1024];
1415 while (fileIn.read(buffer) != -1) {
1416 outputStream.write(buffer);
1417 }
1418 outputStream.closeEntry();
1419 fileIn.close();
1420 }
1421 return outputZipNameAndPath;
1422 } catch (IOException ioe) {
1423 return null;
1424 } finally {
1425 if (outputStream != null) {
1426 try {
1427 outputStream.close();
1428 } catch (IOException e) {
1429 }
1430 }
1431 if (fileIn != null) {
1432 try {
1433 fileIn.close();
1434 } catch (IOException e) {
1435 }
1436 }
1437 }
1438 }
1439 private static void listFile(File parentFile, List nameList, List fileList, String directoryName) {
1440 if (parentFile.isDirectory()) {
1441 File[] files = parentFile.listFiles();
1442 for (int loop = 0; loop < files.length; loop++) {
1443 listFile(files[loop], nameList, fileList, directoryName + parentFile.getName() + "/");
1444 }
1445 } else {
1446 fileList.add(parentFile);
1447 nameList.add(directoryName + parentFile.getName());
1448 }
1449 }
1450 String savePath=%%1;
1451 ArrayList<String> outputZipFileName=new ArrayList<String>();
1452 outputZipFileName.add(%%2);
1453 zipFileProcess(outputZipFileName,savePath);
1454 
1455 44.IDEA加密算法
1456 private byte[] bytekey;
1457 public byte[] getKey(String key){
1458 int len1 =key.length();
1459 if (len1>=16) {
1460 key=key.substring(0, 16);
1461 } else {
1462 for (int i=0;i<16-len1;i++){
1463 key=key.concat("0");
1464 }
1465 }
1466 bytekey=key.getBytes();
1467 return bytekey;
1468 }
1469 /**
1470 * 加密String明文输入,String密文输出
1471 * @param strMing
1472 * @return
1473 */
1474 public String getEncString(String strMing) {
1475 byte[] byteMi = null;
1476 byte[] byteMing = null;
1477 String strMi = "";
1478 try {
1479 return byte2hex(IdeaEncrypt(bytekey,strMing.getBytes(),true) );
1480 }
1481 catch(Exception e){
1482 e.printStackTrace();
1483 }
1484 finally {
1485 byteMing = null;
1486 byteMi = null;
1487 }
1488 return strMi;
1489 }
1490 /**
1491 * 解密 以String密文输入,String明文输出
1492 * @param strMi
1493 * @return
1494 */
1495 public String getDesString(String strMi) {
1496 byte[] byteMing = null;
1497 byte[] byteMi = null;
1498 String strMing = "";
1499 try {
1500 String tmp= new String(IdeaEncrypt(bytekey,hex2byte(strMi.getBytes()),false ));
1501 int len1=tmp.length();
1502 return tmp.substring(0, len1-6);
1503 }
1504 catch(Exception e) {
1505 e.printStackTrace();
1506 }
1507 finally {
1508 byteMing = null;
1509 byteMi = null;
1510 }
1511 return strMing;
1512 }
1513 private byte[] Encrypt(byte[] bytekey, byte[] inputBytes, boolean flag) {
1514 byte[] encryptCode = new byte[8];
1515 // 分解子密钥
1516 int[] key = get_subkey(flag, bytekey);
1517 // 进行加密操作
1518 encrypt(key, inputBytes, encryptCode);
1519 // 返回加密数据
1520 return encryptCode;
1521 }
1522 
1523 private int bytesToInt(byte[] inBytes, int startPos) {
1524 return ((inBytes[startPos] << 8) & 0xff00) +
1525 (inBytes[startPos + 1] & 0xff);
1526 }
1527 
1528 private void intToBytes(int inputInt, byte[] outBytes, int startPos) {
1529 outBytes[startPos] = (byte) (inputInt >>> 8);
1530 outBytes[startPos + 1] = (byte) inputInt;
1531 }
1532 
1533 private int x_multiply_y(int x, int y) {
1534 if (x == 0) {
1535 x = 0x10001 - y;
1536 } else if (y == 0) {
1537 x = 0x10001 - x;
1538 } else {
1539 int tmp = x * y;
1540 y = tmp & 0xffff;
1541 x = tmp >>> 16;
1542 x = (y - x) + ((y < x) ? 1 : 0);
1543 }
1544 
1545 return x & 0xffff;
1546 }
1547 
1548 private void encrypt(int[] key, byte[] inbytes, byte[] outbytes) {
1549 int k = 0;
1550 int a = bytesToInt(inbytes, 0);
1551 int b = bytesToInt(inbytes, 2);
1552 int c = bytesToInt(inbytes, 4);
1553 int d = bytesToInt(inbytes, 6);
1554 
1555 for (int i = 0; i < 8; i++) {
1556 a = x_multiply_y(a, key[k++]);
1557 b += key[k++];
1558 b &= 0xffff;
1559 c += key[k++];
1560 c &= 0xffff;
1561 d = x_multiply_y(d, key[k++]);
1562 
1563 int tmp1 = b;
1564 int tmp2 = c;
1565 c ^= a;
1566 b ^= d;
1567 c = x_multiply_y(c, key[k++]);
1568 b += c;
1569 b &= 0xffff;
1570 b = x_multiply_y(b, key[k++]);
1571 c += b;
1572 c &= 0xffff;
1573 a ^= b;
1574 d ^= c;
1575 b ^= tmp2;
1576 c ^= tmp1;
1577 }
1578 
1579 intToBytes(x_multiply_y(a, key[k++]), outbytes, 0);
1580 intToBytes(c + key[k++], outbytes, 2);
1581 intToBytes(b + key[k++], outbytes, 4);
1582 intToBytes(x_multiply_y(d, key[k]), outbytes, 6);
1583 }
1584 
1585 private int[] encrypt_subkey(byte[] byteKey) {
1586 int[] key = new int[52];
1587 
1588 if (byteKey.length < 16) {
1589 byte[] tmpkey = new byte[16];
1590 System.arraycopy(byteKey, 0, tmpkey,
1591 tmpkey.length - byteKey.length, byteKey.length);
1592 byteKey = tmpkey;
1593 }
1594 
1595 for (int i = 0; i < 8; i++) {
1596 key[i] = bytesToInt(byteKey, i * 2);
1597 }
1598 
1599 for (int j = 8; j < 52; j++) {
1600 if ((j & 0x7) < 6) {
1601 key[j] = (((key[j - 7] & 0x7f) << 9) | (key[j - 6] >> 7)) &
1602 0xffff;
1603 } else if ((j & 0x7) == 6) {
1604 key[j] = (((key[j - 7] & 0x7f) << 9) | (key[j - 14] >> 7)) &
1605 0xffff;
1606 } else {
1607 key[j] = (((key[j - 15] & 0x7f) << 9) | (key[j - 14] >> 7)) &
1608 0xffff;
1609 }
1610 }
1611 
1612 return key;
1613 }
1614 
1615 private int fun_a(int a) {
1616 if (a < 2) {
1617 return a;
1618 }
1619 
1620 int b = 1;
1621 int c = 0x10001 / a;
1622 
1623 for (int i = 0x10001 % a; i != 1;) {
1624 int d = a / i;
1625 a %= i;
1626 b = (b + (c * d)) & 0xffff;
1627 
1628 if (a == 1) {
1629 return b;
1630 }
1631 d = i / a;
1632 i %= a;
1633 c = (c + (b * d)) & 0xffff;
1634 }
1635 
1636 return (1 - c) & 0xffff;
1637 }
1638 
1639 private int fun_b(int b) {
1640 return (0 - b) & 0xffff;
1641 }
1642 
1643 private int[] uncrypt_subkey(int[] key) {
1644 int dec = 52;
1645 int asc = 0;
1646 int[] unkey = new int[52];
1647 int aa = fun_a(key[asc++]);
1648 int bb = fun_b(key[asc++]);
1649 int cc = fun_b(key[asc++]);
1650 int dd = fun_a(key[asc++]);
1651 unkey[--dec] = dd;
1652 unkey[--dec] = cc;
1653 unkey[--dec] = bb;
1654 unkey[--dec] = aa;
1655 
1656 for (int k1 = 1; k1 < 8; k1++) {
1657 aa = key[asc++];
1658 bb = key[asc++];
1659 unkey[--dec] = bb;
1660 unkey[--dec] = aa;
1661 aa = fun_a(key[asc++]);
1662 bb = fun_b(key[asc++]);
1663 cc = fun_b(key[asc++]);
1664 dd = fun_a(key[asc++]);
1665 unkey[--dec] = dd;
1666 unkey[--dec] = bb;
1667 unkey[--dec] = cc;
1668 unkey[--dec] = aa;
1669 }
1670 
1671 aa = key[asc++];
1672 bb = key[asc++];
1673 unkey[--dec] = bb;
1674 unkey[--dec] = aa;
1675 aa = fun_a(key[asc++]);
1676 bb = fun_b(key[asc++]);
1677 cc = fun_b(key[asc++]);
1678 dd = fun_a(key[asc]);
1679 unkey[--dec] = dd;
1680 unkey[--dec] = cc;
1681 unkey[--dec] = bb;
1682 unkey[--dec] = aa;
1683 
1684 return unkey;
1685 }
1686 
1687 private int[] get_subkey(boolean flag, byte[] bytekey) {
1688 if (flag) {
1689 return encrypt_subkey(bytekey);
1690 } else {
1691 return uncrypt_subkey(encrypt_subkey(bytekey));
1692 }
1693 }
1694 
1695 private byte[] ByteDataFormat(byte[] data, int unit) {
1696 int len = data.length;
1697 int padlen = unit - (len % unit);
1698 int newlen = len + padlen;
1699 byte[] newdata = new byte[newlen];
1700 System.arraycopy(data, 0, newdata, 0, len);
1701 
1702 for (int i = len; i < newlen; i++)
1703 newdata[i] = (byte) padlen;
1704 
1705 return newdata;
1706 }
1707 
1708 public byte[] IdeaEncrypt(byte[] idea_key, byte[] idea_data, boolean flag) {
1709 byte[] format_key = ByteDataFormat(idea_key, 16);
1710 byte[] format_data = ByteDataFormat(idea_data, 8);
1711 
1712 int datalen = format_data.length;
1713 int unitcount = datalen / 8;
1714 byte[] result_data = new byte[datalen];
1715 
1716 for (int i = 0; i < unitcount; i++) {
1717 byte[] tmpkey = new byte[16];
1718 byte[] tmpdata = new byte[8];
1719 System.arraycopy(format_key, 0, tmpkey, 0, 16);
1720 System.arraycopy(format_data, i * 8, tmpdata, 0, 8);
1721 
1722 byte[] tmpresult = Encrypt(tmpkey, tmpdata, flag);
1723 System.arraycopy(tmpresult, 0, result_data, i * 8, 8);
1724 }
1725 
1726 return result_data;
1727 }
1728 
1729 /**
1730 * 二行制转字符串
1731 * @param b
1732 * @return
1733 */
1734 public static String byte2hex(byte[] b) { //一个字节的数,
1735 // 转成16进制字符串
1736 String hs = "";
1737 String stmp = "";
1738 for (int n = 0; n < b.length; n++) {
1739 //整数转成十六进制表示
1740 stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
1741 if (stmp.length() == 1)
1742 hs = hs + "0" + stmp;
1743 else
1744 hs = hs + stmp;
1745 }
1746 return hs.toUpperCase(); //转成大写
1747 }
1748 
1749 public static byte[] hex2byte(byte[] b) {
1750 if((b.length%2)!=0)
1751 throw new IllegalArgumentException("长度不是偶数");
1752 byte[] b2 = new byte[b.length/2];
1753 for (int n = 0; n < b.length; n+=2) {
1754 String item = new String(b,n,2);
1755 // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节
1756 b2[n/2] = (byte)Integer.parseInt(item,16);
1757 }
1758 
1759 return b2;
1760 }
1761 
1762 public static void main(String[] args) {
1763 
1764 
1765 IDEA idea = new IDEA();
1766 
1767 idea.getKey("aadd");//生成密匙
1768 
1769 String strEnc = idea.getEncString("1234567890");//加密字符串,返回String的密文
1770 System.out.println(strEnc);
1771 
1772 String strDes = idea.getDesString(strEnc);//把String 类型的密文解密
1773 System.out.println(strDes);
1774 
1775 
1776 // String key = "0000000000000000";
1777 // String data = "11111111冯";
1778 // byte[] bytekey = key.getBytes();
1779 // byte[] bytedata = data.getBytes();
1780 //
1781 // IDEA idea = new IDEA();
1782 // byte[] encryptdata = idea.IdeaEncrypt(bytekey, bytedata, true);
1783 // byte[] decryptdata = idea.IdeaEncrypt(bytekey, encryptdata, false);
1784 //
1785 // System.out.println("--------------------------------");
1786 //
1787 // for (int i = 0; i < bytedata.length; i++) {
1788 // System.out.print(" " + bytedata[i] + " ");
1789 // }
1790 //
1791 // System.out.println("");
1792 //
1793 // for (int i = 0; i < encryptdata.length; i++) {
1794 // System.out.print(" " + encryptdata[i] + " ");
1795 // }
1796 //
1797 // System.out.println("");
1798 //
1799 // for (int i = 0; i < decryptdata.length; i++) {
1800 // System.out.print(" " + decryptdata[i] + " ");
1801 // }
1802 
1803 }
1804 
1805 45.验证Schema
1806 /*
1807 import javax.xml.*;
1808 import javax.xml.transform.stream.*;
1809 import javax.xml.validation.*;
1810 import org.xml.sax.*;
1811 */
1812 SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
1813 StreamSource ss = new StreamSource(%%1); //"mySchema.xsd"
1814 try {
1815 Schema schema = factory.newSchema(ss);
1816 } catch (SAXException e) {
1817 e.printStackTrace();
1818 }
1819 
1820 46.Grep
1821 /*
1822 import java.util.regex.*;
1823 import java.io.*;
1824 */
1825 throws Exception
1826 Pattern pattern = Pattern.compile(%%1); // 第一个参数为需要匹配的字符串
1827 Matcher matcher = pattern.matcher("");
1828 String file = %%2;
1829 BufferedReader br = null;
1830 String line;
1831 try {
1832 br = new BufferedReader (new FileReader (file)); // 打开文件
1833 } catch (IOException e) {
1834 // 没有打开文件,则产生异常
1835 System.err.println ("Cannot read '" + file
1836 + "': " + e.getMessage());
1837 }
1838 while ((line = br.readLine()) != null) { // 读入一行,直到文件结束
1839 matcher.reset (line); // 匹配字符串
1840 if (matcher.find()) { // 如果有匹配的字符串,则输出
1841 //line
1842 }
1843 }
1844 br.close(); // 关闭文件
1845 
1846 47.直接创建多级目录
1847 //import java.io.*;
1848 File f=new File(%%1);
1849 f.mkdirs();
1850 
1851 48.批量重命名
1852 //import java.io.*;
1853 File target = new File("%%1");
1854 String[] files = target.list();
1855 File f = null;
1856 String filename = null;
1857 for (String file : files) {
1858 f = new File(target, file);
1859 filename = f.getName();
1860 if (filename.substring(filename.lastIndexOf('.')).equalsIgnoreCase(
1861 "%%2")) {
1862 f.renameTo(new File(target.getAbsolutePath(), filename.replace(
1863 "%%2", "%%3")));
1864 // 这里可以反复使用replace替换,当然也可以使用正则表达式来替换了 ".txt" ".bat"
1865 }
1866 }
1867 
1868 49.文本查找替换
1869 //import java.nio.*;
1870 String s1=%%1;
1871 String s2=%%2;
1872 String s3=%%3;
1873 int pos=%%4;
1874 /*变量i和j分别表示主串和模式串中当前字符串的位置,k表示匹配次数*/
1875 int i,j,k=0;
1876 i = pos;
1877 j = 0;
1878 //将s1转化成StringBuffer型进行操作
1879 repStr = new StringBuffer(s1);
1880 while(i<repStr.length()&&j<s2.length())
1881 {
1882 if(repStr.charAt(i) == s2.charAt(j))
1883 {
1884 ++i; ++j;
1885 if(j==s2.length())
1886 {
1887 /*j=s2.length()表示字符串匹配成功,匹配次数加1,此外对主串进行字符串替换*/
1888 k = k+1;
1889 repStr.replace(i-j,i,s3);
1890 //将j进行重新赋值开始新的比较
1891 j = 0;
1892 }
1893 }
1894 else {i = i-j+1; j = 0;}
1895 }
1896 return k;
1897 
1898 50.文件关联
1899 //import java.io.*;
1900 try {
1901 Runtime.getRuntime().exec(%%1); //"assoc .txt =mynote" "assoc [.ext[=[filetype]]]"
1902 } catch (IOException e) {
1903 e.printStackTrace();
1904 }
1905 
1906 51.批量转换编码从GB2312到Unicode
1907 
1908 
1909 52.设置JDK环境变量
1910 @echo off
1911 IF EXIST %1\bin\java.exe (
1912 rem 如输入正确的 Java2SDK 安装目录,开始设置环境变量
1913 @setx JAVA_HOME %1
1914 @setx path %path%;%JAVA_HOME%\bin
1915 @setx classpath %classpath%;.
1916 @setx classpath %classpath%;%JAVA_HOME%\lib\tools.jar
1917 @setx classpath %classpath%;%JAVA_HOME%\lib\dt.jar
1918 @setx classpath %classpath%;%JAVA_HOME%\jre\lib\rt.jar
1919 @echo on
1920 @echo Java 2 SDK 环境参数设置完毕,正常退出。
1921 ) ELSE (
1922 IF "%1"=="" (
1923 rem 如没有提供安装目录,提示之后退出
1924 @echo on
1925 @echo 没有提供 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。
1926 ) ELSE (
1927 rem 如果提供非空的安装目录但没有bin\java.exe,则指定的目录为错误的目录
1928 @echo on
1929 @echo 非法的 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。
1930 )
1931 )
1932 //http://sourceforge.net/projects/jregistrykey/
1933 //import ca.beq.util.win32.registry.*;
1934 //import java.util.*;
1935 1.打开键
1936 RegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders");
1937 2.添加键
1938 RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");
1939 r.create();
1940 9.写入字符串值
1941 RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");
1942 RegistryValue v = new RegistryValue("myVal", ValueType.REG_SZ, "data");
1943 r.setValue(v);
1944 6.获取DWORD值
1945 RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");
1946 if(r.hasValue("myValue")) {
1947 RegistryValue v = r.getValue("myValue");
1948 v.setType(ValueType.REG_DWORD);
1949 } // if
1950 
1951 
1952 53.批量转换编码从Unicode到GB2312
1953 
1954 54.删除空文件夹
1955 //import java.io.*;
1956 File f=new File(%%1);
1957 if (isFolerNull(f)) {
1958 for (File file :f.listFiles()) {
1959 if (file.list().length == 0)
1960 file.delete();
1961 }
1962 }
1963 
1964 55.GB2312文件转UTF-8格式
1965 //import java.io.*;
1966 public class CharsetConvertor {
1967 public static void main(String[] args) {
1968 String str = "This is a test for *中网!@#$。,?";
1969 try {
1970 File f = new File("D:/test.txt");
1971 FileOutputStream fio = new FileOutputStream(f);
1972 String s = gbToUtf8(str);
1973 fio.write(s.getBytes("UTF-8"));
1974 fio.close();
1975 }
1976 catch (Exception e) {
1977 e.printStackTrace();
1978 }
1979 }
1980 
1981 public static String gbToUtf8(String str) throws UnsupportedEncodingException {
1982 StringBuffer sb = new StringBuffer();
1983 for (int i = 0; i < str.length(); i++) {
1984 String s = str.substring(i, i + 1);
1985 if (s.charAt(0) > 0x80) {
1986 byte[] bytes = s.getBytes("Unicode");
1987 String binaryStr = "";
1988 for (int j = 2; j < bytes.length; j += 2) {
1989 // the first byte
1990 String hexStr = getHexString(bytes[j + 1]);
1991 String binStr = getBinaryString(Integer.valueOf(hexStr, 16));
1992 binaryStr += binStr;
1993 // the second byte
1994 hexStr = getHexString(bytes[j]);
1995 binStr = getBinaryString(Integer.valueOf(hexStr, 16));
1996 binaryStr += binStr;
1997 }
1998 // convert unicode to utf-8
1999 String s1 = "1110" + binaryStr.substring(0, 4);
2000 String s2 = "10" + binaryStr.substring(4, 10);
2001 String s3 = "10" + binaryStr.substring(10, 16);
2002 byte[] bs = new byte[3];
2003 bs[0] = Integer.valueOf(s1, 2).byteValue();
2004 bs[1] = Integer.valueOf(s2, 2).byteValue();
2005 bs[2] = Integer.valueOf(s3, 2).byteValue();
2006 String ss = new String(bs, "UTF-8");
2007 sb.append(ss);
2008 } else {
2009 sb.append(s);
2010 }
2011 }
2012 return sb.toString();
2013 }
2014 
2015 private static String getHexString(byte b) {
2016 String hexStr = Integer.toHexString(b);
2017 int m = hexStr.length();
2018 if (m < 2) {
2019 hexStr = "0" + hexStr;
2020 } else {
2021 hexStr = hexStr.substring(m - 2);
2022 }
2023 return hexStr;
2024 }
2025 
2026 private static String getBinaryString(int i) {
2027 String binaryStr = Integer.toBinaryString(i);
2028 int length = binaryStr.length();
2029 for (int l = 0; l < 8 - length; l++) {
2030 binaryStr = "0" + binaryStr;
2031 }
2032 return binaryStr;
2033 }
2034 }
2035 
2036 
2037 56.UTF-8文件转GB2312格式
2038 private String utf8Togb2312(String str){
2039 StringBuffer sb = new StringBuffer();
2040 for(int i=0; i<str.length(); i++) {
2041 char c = str.charAt(i);
2042 switch (c) {
2043 case '+':
2044 sb.append(' ');
2045 break;
2046 case '%':
2047 try {
2048 sb.append((char)Integer.parseInt(
2049 str.substring(i+1,i+3),16));
2050 }
2051 catch (NumberFormatException e) {
2052 throw new IllegalArgumentException();
2053 }
2054 i += 2;
2055 break;
2056 default:
2057 sb.append(c);
2058 break;
2059 }
2060 }
2061 // Undo conversion to external encoding
2062 String result = sb.toString();
2063 String res=null;
2064 try{
2065 byte[] inputBytes = result.getBytes("8859_1");
2066 res= new String(inputBytes,"UTF-8");
2067 }
2068 catch(Exception e){}
2069 return res;
2070 }
2071 
2072 57.获取文件路径的父路径
2073 String %%2=%%1.substring(0,%%1.lastIndexOf("\\"));
2074 
2075 58.Unicode文件转UTF-8格式
2076 try {
2077 // Convert from Unicode to UTF-8
2078 String string = "abc\u5639\u563b";
2079 byte[] utf8 = string.getBytes("UTF-8");
2080 // Convert from UTF-8 to Unicode
2081 string = new String(utf8, "UTF-8");
2082 } catch (UnsupportedEncodingException e) {
2083 }
2084 /**
2085 * unicode 转换成 utf-8
2086 * @author fanhui
2087 * 2007-3-15
2088 * @param theString
2089 * @return
2090 */
2091 public static String unicodeToUtf8(String theString) {
2092 char aChar;
2093 int len = theString.length();
2094 StringBuffer outBuffer = new StringBuffer(len);
2095 for (int x = 0; x < len;) {
2096 aChar = theString.charAt(x++);
2097 if (aChar == '\\') {
2098 aChar = theString.charAt(x++);
2099 if (aChar == 'u') {
2100 // Read the xxxx
2101 int value = 0;
2102 for (int i = 0; i < 4; i++) {
2103 aChar = theString.charAt(x++);
2104 switch (aChar) {
2105 case '0':
2106 case '1':
2107 case '2':
2108 case '3':
2109 case '4':
2110 case '5':
2111 case '6':
2112 case '7':
2113 case '8':
2114 case '9':
2115 value = (value << 4) + aChar - '0';
2116 break;
2117 case 'a':
2118 case 'b':
2119 case 'c':
2120 case 'd':
2121 case 'e':
2122 case 'f':
2123 value = (value << 4) + 10 + aChar - 'a';
2124 break;
2125 case 'A':
2126 case 'B':
2127 case 'C':
2128 case 'D':
2129 case 'E':
2130 case 'F':
2131 value = (value << 4) + 10 + aChar - 'A';
2132 break;
2133 default:
2134 throw new IllegalArgumentException(
2135 "Malformed \\uxxxx encoding.");
2136 }
2137 }
2138 outBuffer.append((char) value);
2139 } else {
2140 if (aChar == 't')
2141 aChar = '\t';
2142 else if (aChar == 'r')
2143 aChar = '\r';
2144 else if (aChar == 'n')
2145 aChar = '\n';
2146 else if (aChar == 'f')
2147 aChar = '\f';
2148 outBuffer.append(aChar);
2149 }
2150 } else
2151 outBuffer.append(aChar);
2152 }
2153 return outBuffer.toString();
2154 }
2155 
2156 59.CRC循环冗余校验
2157 /*
2158 import java.nio.*;
2159 import java.util.zip.*;
2160 */
2161 try {
2162 FileInputStream in = new FileInputStream(%%1);
2163 FileChannel channel = in.getChannel();
2164 CRC32 crc = new CRC32();
2165 int length = (int)channel.size();
2166 MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, length);
2167 for(int i = 0;i<length;i++)
2168 {
2169 int c = buffer.get(i);
2170 crc.update(c);
2171 }
2172 System.out.println("crc校验和:"+(Long.toHexString(crc.getValue())).toUpperCase());
2173 } catch (Exception e) {
2174 e.printStackTrace();
2175 }
2176 
2177 60.判断是否为空文件
2178 //import java.io.*;
2179 FileReader fr=new FileReader(%%1);
2180 if(fr.read()==1)
2181 //空白文件
2182 
2183 61.终止程序
2184 Runtime.exec("taskkill /F /IM %%1.exe");
2185 
2186 62.定时关机
2187 import java.awt.*;
2188 import java.awt.event.*;
2189 import java.awt.geom.*;
2190 import java.util.*;
2191 import javax.swing.*;
2192 
2193 public class ClockFrame extends JFrame {
2194 private JComboBox hourBox, minuteBox, secondBox;
2195 
2196 private int hour, minute, second, totalSeconds, currentSeconds;
2197 
2198 private long argue;
2199 
2200 private GregorianCalendar calendar;
2201 
2202 private boolean change = true;
2203 
2204 private static final int WIDTH = 200;
2205 
2206 private static final int HEIGHT = 150;
2207 
2208 public ClockFrame() {
2209 
2210 setTitle("关机定时");
2211 setSize(200, 150);
2212 
2213 Container contentPanel = getContentPane();
2214 
2215 JPanel timePanel = new JPanel();
2216 timePanel.setLayout(new GridLayout(4, 2));
2217 
2218 JLabel minuteLable = new JLabel("设置分钟");
2219 timePanel.add(minuteLable);
2220 minuteBox = new JComboBox();
2221 timePanel.add(minuteBox);
2222 for (int i = 0; i < 60; i++) {
2223 minuteBox.addItem(i);
2224 }
2225 minuteBox.addActionListener(new ActionListener() {
2226 public void actionPerformed(ActionEvent evt) {
2227 minute = ((Integer) minuteBox.getSelectedItem()).intValue();
2228 }
2229 });
2230 
2231 JLabel secondLable = new JLabel("设置秒钟");
2232 timePanel.add(secondLable);
2233 secondBox = new JComboBox();
2234 timePanel.add(secondBox);
2235 for (int i = 0; i < 60; i++) {
2236 secondBox.addItem(i);
2237 }
2238 secondBox.addActionListener(new ActionListener() {
2239 public void actionPerformed(ActionEvent evt) {
2240 second = ((Integer) secondBox.getSelectedItem()).intValue();
2241 }
2242 });
2243 contentPanel.add(timePanel, BorderLayout.CENTER);
2244 
2245 JButton check = new JButton("确定");
2246 contentPanel.add(check, BorderLayout.SOUTH);
2247 check.addActionListener(new ActionListener() {
2248 public void actionPerformed(ActionEvent evt) {
2249 JButton check=(JButton) evt.getSource();
2250 if (check.getText().equals("确定")) {
2251 calendar = new GregorianCalendar();
2252 int currentSeconds = calendar.get(Calendar.HOUR_OF_DAY)
2253 * 3600 + calendar.get(Calendar.MINUTE) * 60
2254 + calendar.get(Calendar.SECOND);
2255 totalSeconds = hour * 3600 + minute * 60 + second;
2256 
2257 if (totalSeconds - currentSeconds >= 0) {
2258 argue = (totalSeconds - currentSeconds) * 1000;
2259 JOptionPane.showMessageDialog(ClockFrame.this,
2260 "您设置的时间为 " + hour + ":" + minute + ":" + second
2261 + "\n程序将在后台运行,并在此时自动关闭计算机!", "设置成功",
2262 JOptionPane.INFORMATION_MESSAGE);
2263 hideFrame();
2264 }
2265 try {
2266 // Thread.sleep(argue);//这句没用
2267 Runtime.getRuntime().exec(
2268 "shutdown.exe -s -c \"我要关机了噢!不好意思!\" -t "
2269 + totalSeconds);
2270 check.setText("取消");
2271 } catch (Exception e) {
2272 e.printStackTrace();
2273 }
2274 }else{
2275 try {
2276 Runtime.getRuntime().exec("shutdown.exe -a");
2277 check.setText("确定");
2278 } catch (Exception e) {
2279 e.printStackTrace();
2280 }
2281 }
2282 }
2283 });
2284 }
2285 
2286 private void hideFrame() {
2287 this.setVisible(false);
2288 }
2289 
2290 public static void main(String[] args) {
2291 JFrame frame = new ClockFrame();
2292 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
2293 frame.setLocationByPlatform(true);
2294 frame.show();
2295 }
2296 }
2297 
2298 63.显示进程列表
2299 //import java.io.*;
2300 BufferedReader br=null;
2301 try {
2302 Process proc=Runtime.getRuntime().exec("tasklist");
2303 br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
2304 @SuppressWarnings("unused")
2305 String line=null;
2306 while((line=br.readLine())!=null){
2307 //br.readLine()
2308 }
2309 } catch (IOException e) {
2310 e.printStackTrace();
2311 }finally{
2312 if(br!=null){
2313 try {
2314 br.close();
2315 } catch (Exception e) {
2316 e.printStackTrace();
2317 }
2318 }
2319 }
2320 
2321 64.遍历文件夹列出文件大小
2322 
2323 65.目录下所有文件移动到整合操作
2324 /*
2325 import java.io.*;
2326 import java.util.*;
2327 import javax.swing.*;
2328 */
2329 JFileChooser Jfc = new JFileChooser("请选择源路径"); // 建立选择档案对话方块盒 Jfc
2330 Jfc.showDialog(null, %%1);
2331 if (!Jfc.getSelectedFile() != null) {
2332 return;
2333 }
2334 String %%1 = Jfc.getSelectedFile().getParent();
2335 Jfc = new JFileChooser("请选择目标路径"); // 建立选择档案对话方块盒 Jfc
2336 Jfc.showDialog(null, %%1);
2337 if (!Jfc.getSelectedFile() != null) {
2338 return;
2339 }
2340 String %%2 = Jfc.getSelectedFile().getParent();
2341 
2342 66.对目标压缩文件解压缩到指定文件夹
2343 /*
2344 import java.io.*;
2345 import java.util.zip.*;
2346 */
2347 String zipFileName=%%1;
2348 String extPlace=%%2;
2349 File myFolderPath = new File(extPlace);
2350 try {
2351 if (!myFolderPath.exists()) {
2352 myFolderPath.mkdir();
2353 }
2354 } catch (Exception e) {
2355 //新建目录操作出错
2356 e.printStackTrace();
2357 return;
2358 }
2359 try {
2360 ZipInputStream in = new ZipInputStream(new FileInputStream(
2361 zipFileName));
2362 ZipEntry entry = null;
2363 while ((entry = in.getNextEntry()) != null) {
2364 String entryName = entry.getName();
2365 File file = new File(extPlace , entryName);
2366 if (entry.isDirectory()) {
2367 file.mkdirs();
2368 } else {
2369 FileOutputStream os = new FileOutputStream(file);
2370 // Transfer bytes from the ZIP file to the output
2371 // file
2372 byte[] buf = new byte[10240];
2373 int len;
2374 while ((len = in.read(buf)) > 0) {
2375 os.write(buf, 0, len);
2376 }
2377 os.close();
2378 in.closeEntry();
2379 }
2380 }
2381 } catch (IOException e) {
2382 e.printStackTrace();
2383 }
2384 
2385 67.创建目录副本整合操作
2386 /*
2387 import java.io.*;
2388 import java.util.*;
2389 import javax.swing.*;
2390 */
2391 JFileChooser Jfc = new JFileChooser("请选择源路径"); // 建立选择档案对话方块盒 Jfc
2392 Jfc.showDialog(null, %%1);
2393 if (!Jfc.getSelectedFile() != null) {
2394 return;
2395 }
2396 String %%1 = Jfc.getSelectedFile().getParent();
2397 Jfc = new JFileChooser("请选择目标路径"); // 建立选择档案对话方块盒 Jfc
2398 Jfc.showDialog(null, %%1);
2399 if (!Jfc.getSelectedFile() != null) {
2400 return;
2401 }
2402 String %%2 = Jfc.getSelectedFile().getParent();
2403 
2404 68.打开网页
2405 //import java.io.*;
2406 try{
2407 String command = "C:\\Program Files\\Internet Explorer\\Iexplore.exe "+%%1;
2408 Runtime.getRuntime().exec(command);
2409 } catch (IOException ex) {
2410 ex.printStackTrace();
2411 }
2412 
2413 69.删除空文件夹整合操作
2414 /*
2415 import java.io.*;
2416 import java.util.*;
2417 import javax.swing.*;
2418 */
2419 
2420 70.获取磁盘所有分区,把结果放在数组drives中
2421 String root; //root代表盘符路径
2422 for(i=0;i<20;i++) //0-20代表最大的盘符数
2423 {
2424 root.Format("%c:\\",allfenqu[i]);
2425 if(GetDriveType(root)==5)
2426 allfenqu[i]='\0';
2427 }
2428 
2429 但我用这样的代码时结果却无法去掉光驱盘符,allfenqu[]中还是会包含光驱盘符:
2430 String root;
2431 for(i=0;i<20;i++)
2432 {
2433 root=allfenqu[i]+":\\";
2434 if(GetDriveType(root)==5)
2435 allfenqu[i]='\0';
2436 }
2437 
2438 71.激活一个程序或程序关联的文件
2439 //import java.io.*;
2440 try {
2441 Runtime.getRuntime().exec(%%1);
2442 } catch (IOException e) {
2443 e.printStackTrace();
2444 }
2445 
2446 72.MP3播放
2447 //必须下载 jmf包
2448 //import javax.media.bean.playerbean.MediaPlayer; //必须下载 jmf 媒体播放包
2449 MediaPlayer player;
2450 player = new MediaPlayer();
2451 setLayout(new FlowLayout());
2452 try{
2453 player.setMediaLocation("file:/F:\\音乐\\mp3\\黑白配.mp3");// <<file:/>>不能删除 音频文件路径
2454 } catch (Exception e) {
2455 System.err.println("文件不存在");
2456 }
2457 player.start();
2458 player.stop();
2459 
2460 73.WAV播放
2461 /*
2462 import javax.sound.sampled.*;
2463 import java.io.*;
2464 */
2465 private AudioFormat format;
2466 private byte[] samples;
2467 private String filename;
2468 try {
2469 // open the audio input stream
2470 AudioInputStream stream =AudioSystem.getAudioInputStream(new File(filename));
2471 format = stream.getFormat();
2472 // get the audio samples
2473 samples = getSamples(stream);
2474 }
2475 catch (UnsupportedAudioFileException ex) {
2476 ex.printStackTrace();
2477 }
2478 catch (IOException ex) {
2479 ex.printStackTrace();
2480 }
2481 
2482 private byte[] getSamples(AudioInputStream audioStream) {
2483 // get the number of bytes to read
2484 int length = (int)(audioStream.getFrameLength() * format.getFrameSize());
2485 
2486 // read the entire stream
2487 byte[] samples = new byte[length];
2488 DataInputStream is = new DataInputStream(audioStream);
2489 try {
2490 is.readFully(samples);
2491 }
2492 catch (IOException ex) {
2493 ex.printStackTrace();
2494 }
2495 
2496 // return the samples
2497 return samples;
2498 }
2499 
2500 public void play(InputStream source) {
2501 
2502 // use a short, 100ms (1/10th sec) buffer for real-time
2503 // change to the sound stream
2504 int bufferSize = format.getFrameSize() *
2505 Math.round(format.getSampleRate() / 10);
2506 byte[] buffer = new byte[bufferSize];
2507 
2508 // create a line to play to
2509 SourceDataLine line;
2510 try {
2511 DataLine.Info info =
2512 new DataLine.Info(SourceDataLine.class, format);
2513 line = (SourceDataLine)AudioSystem.getLine(info);
2514 line.open(format, bufferSize);
2515 }
2516 catch (LineUnavailableException ex) {
2517 ex.printStackTrace();
2518 return;
2519 }
2520 
2521 // start the line
2522 line.start();
2523 
2524 // copy data to the line
2525 try {
2526 int numBytesRead = 0;
2527 while (numBytesRead != -1) {
2528 numBytesRead =
2529 source.read(buffer, 0, buffer.length);
2530 if (numBytesRead != -1) {
2531 line.write(buffer, 0, numBytesRead);
2532 }
2533 }
2534 }
2535 catch (IOException ex) {
2536 ex.printStackTrace();
2537 }
2538 
2539 // wait until all data is played, then close the line
2540 line.drain();
2541 line.close();
2542 }
2543 
2544 throws Exception
2545 String filename=%%1;
2546 InputStream stream =new ByteArrayInputStream(sound.getSamples());
2547 // play the sound
2548 sound.play(stream);
2549 
2550 74.写图像到剪切板
2551 /*
2552 import java.awt.*;
2553 import java.awt.datatransfer.*;
2554 import java.io.*;
2555 private final Image image;
2556 */
2557 Transferable trans = new Transferable() {
2558 public DataFlavor[] getTransferDataFlavors() {
2559 return new DataFlavor[] { DataFlavor.imageFlavor };
2560 }
2561 
2562 public boolean isDataFlavorSupported(DataFlavor flavor) {
2563 return DataFlavor.imageFlavor.equals(flavor);
2564 }
2565 
2566 public Object getTransferData(DataFlavor flavor)
2567 throws UnsupportedFlavorException, IOException {
2568 if (isDataFlavorSupported(flavor))
2569 return image;
2570 throw new UnsupportedFlavorException(flavor);
2571 }
2572 };
2573 Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans,
2574 null);
2575 
2576 75.从剪贴板复制图像到窗体
2577 
2578 76.删除文件夹下的所有文件且不删除文件夹下的文件夹
2579 /*
2580 import java.io.*;
2581 import java.util.*;
2582 */
2583 LinkedList<String> folderList = new LinkedList<String>();
2584 folderList.add(%%1);
2585 while (folderList.size() > 0) {
2586 File file = new File((String)folderList.poll());
2587 File[] files = file.listFiles();
2588 ArrayList<File> fileList = new ArrayList<File>();
2589 for (int i = 0; i < files.length; i++) {
2590 if (files[i].isDirectory()) {
2591 folderList.add(files[i].getPath());
2592 } else {
2593 fileList.add(files[i]);
2594 }
2595 }
2596 for (File f : fileList) {
2597 f.delete();
2598 }
2599 }
2600 
2601 78.Unicode文件转GB2312格式
2602 private static boolean isNeedConvert(char para){
2603 return ((para&(0x00FF))!=para);
2604 }
2605 String dataStr=%%1;"\\u9009 \\u5173";
2606 int index = 0;
2607 StringBuffer buffer = new StringBuffer();
2608 while(index<dataStr.length()) {
2609 if(!"\\u".equals(dataStr.substring(index,index+2))){
2610 buffer.append(dataStr.charAt(index));
2611 index++;
2612 continue;
2613 }
2614 String charStr = "";
2615 charStr = dataStr.substring(index+2,index+6);
2616 char letter = (char) Integer.parseInt(charStr, 16 );
2617 buffer.append(letter);
2618 index+=6;
2619 }
2620 String %%2=buffer.toString();
2621 
2622 79.开源程序库Xercesc-C++代码工程中内联
2623 import java.io.*;
2624 import java.util.*;
2625 import java.util.regex.*;
2626 public class InlineXercesc {
2627 private final String filter = ".cpp";
2628 
2629 private ArrayList<String> all = new ArrayList<String>();
2630 
2631 private LinkedList<String> fal2 = new LinkedList<String>();
2632 
2633 private static String CurDir = System.getProperty("user.dir");
2634 
2635 private void doSearch(String path) {
2636 File filepath = new File(path);
2637 if (filepath.exists() && filepath.isDirectory()) {
2638 File[] fileArray = filepath.listFiles();
2639 for (File f : fileArray) {
2640 if (f.isDirectory()) {
2641 doSearch(f.getPath());
2642 } else {
2643 if (f.getName().indexOf(filter) >= 0) {
2644 for (String file : all) {
2645 if (file.substring(file.lastIndexOf("\\") + 1)
2646 .equals(f.getName())) {
2647 fal2.add(f.getAbsolutePath());
2648 }
2649 }
2650 }
2651 }
2652 }
2653 }
2654 }
2655 
2656 public InlineXercesc(String lib) throws IOException {
2657 String SourceLib = "D:\\Desktop\\大项目\\xerces-c-3.0.1\\src";
2658 Pattern pattern = Pattern.compile("include.*?" + lib + ".*?>"); // 第一个参数为需要匹配的字符串
2659 Matcher matcher = pattern.matcher("");
2660 LinkedList<String> fal = new LinkedList<String>();
2661 File delfile = new File(CurDir);
2662 File[] files2 = delfile.listFiles();
2663 for (int l = 0; l < files2.length; l++) {
2664 if (files2[l].isDirectory()) {
2665 String enumDir = CurDir + "\\" + files2[l].getName() + "\\";
2666 LinkedList<String> folderList = new LinkedList<String>();
2667 folderList.add(files2[l].getAbsolutePath());
2668 while (folderList.size() > 0) {
2669 File file = new File((String)folderList.poll());
2670 File[] files = file.listFiles();
2671 for (int i = 0; i < files.length; i++) {
2672 if (files[i].isDirectory()) {
2673 folderList.add(files[i].getPath());
2674 } else {
2675 String fileStr = files[i].getAbsolutePath(); // 第2个参数开始,均为文件名。
2676 BufferedReader br = null;
2677 String line;
2678 try {
2679 br = new BufferedReader(new FileReader(fileStr)); // 打开文件
2680 } catch (IOException e) {
2681 // 没有打开文件,则产生异常
2682 System.err.println("Cannot read '" + fileStr
2683 + "': " + e.getMessage());
2684 continue;
2685 }
2686 StringBuilder sb = new StringBuilder(2048);
2687 while ((line = br.readLine()) != null) { // 读入一行,直到文件结束
2688 matcher.reset(line); // 匹配字符串
2689 if (matcher.find()) { // 如果有匹配的字符串,则输出
2690 sb.append(line.replace(
2691 line.substring(line.indexOf("<"),
2692 line.lastIndexOf("/") + 1),
2693 "\"").replace('>', '\"'));
2694 line = line.substring(
2695 line.indexOf("<") + 1,
2696 line.lastIndexOf(">")).replace('/',
2697 '\\');
2698 fal.add(SourceLib + "\\" + line);
2699 } else {
2700 sb.append(line);
2701 }
2702 sb.append("\r\n");
2703 }
2704 br.close(); // 关闭文件
2705 FileWriter fw2 = new FileWriter(fileStr);
2706 fw2.write(sb.toString());
2707 fw2.flush();
2708 fw2.close();
2709 }
2710 }
2711 }
2712 while (fal.size() > 0) {
2713 String file = fal.poll(); // 第2个参数开始,均为文件名。
2714 String targetPath = enumDir
2715 + file.substring(file.lastIndexOf("\\") + 1);
2716 if (!new File(targetPath).exists()) {
2717 BufferedReader br = null;
2718 String line;
2719 try {
2720 br = new BufferedReader(new FileReader(file)); // 打开文件
2721 } catch (IOException e) {
2722 // 没有打开文件,则产生异常
2723 System.err.println("Cannot read '" + file + "': "
2724 + e.getMessage());
2725 continue;
2726 }
2727 FileWriter fw = new FileWriter(targetPath);
2728 while ((line = br.readLine()) != null) { // 读入一行,直到文件结束
2729 matcher.reset(line); // 匹配字符串
2730 if (matcher.find()) { // 如果有匹配的字符串,则输出
2731 fal.add(SourceLib
2732 + "\\"
2733 + line.substring(line.indexOf("<") + 1,
2734 line.lastIndexOf(">")).replace(
2735 '/', '\\'));
2736 line = line.replace(line.substring(line
2737 .indexOf("<"),
2738 line.lastIndexOf("/") + 1), "\"");
2739 line = line.replace(">", "\"");
2740 
2741 }
2742 fw.write(line + "\r\n");
2743 }
2744 fw.flush();
2745 fw.close();
2746 br.close(); // 关闭文件
2747 
2748 }
2749 }
2750 LinkedList<String> folderListArr = new LinkedList<String>();
2751 folderListArr.add(CurDir);
2752 while (folderListArr.size() > 0) {
2753 File file = new File(folderListArr.poll());
2754 File[] files = file.listFiles();
2755 for (int i = 0; i < files.length; i++) {
2756 if (files[i].isDirectory()) {
2757 folderListArr.add(files[i].getPath());
2758 } else {
2759 if (files[i].getName().substring(
2760 files[i].getName().lastIndexOf('.'))
2761 .equals(".hpp"))
2762 all.add(files[i].getAbsoluteFile().toString()
2763 .replace(".hpp", ".cpp"));
2764 }
2765 }
2766 }
2767 int count = 1;
2768 while (count > 0) {
2769 doSearch(SourceLib);
2770 all.clear();
2771 while (fal2.size() > 0) {
2772 String file1 = fal2.poll(); // 第2个参数开始,均为文件名。
2773 String targetPath = enumDir
2774 + file1.substring(file1.lastIndexOf("\\") + 1);
2775 if (!new File(targetPath).exists()) {
2776 BufferedReader br = null;
2777 String line;
2778 try {
2779 br = new BufferedReader(new FileReader(file1)); // 打开文件
2780 } catch (IOException e) {
2781 // 没有打开文件,则产生异常
2782 System.err.println("Cannot read '" + file1
2783 + "': " + e.getMessage());
2784 continue;
2785 }
2786 FileWriter fw;
2787 try {
2788 fw = new FileWriter(targetPath);
2789 while ((line = br.readLine()) != null) { // 读入一行,直到文件结束
2790 matcher.reset(line); // 匹配字符串
2791 if (matcher.find()) { // 如果有匹配的字符串,则输出
2792 fal2.add(SourceLib
2793 + "\\"
2794 + line.substring(
2795 line.indexOf('<') + 1,
2796 line.lastIndexOf('>'))
2797 .replace('/', '\\'));
2798 all.add(fal2.getLast().replace(".hpp",
2799 ".cpp"));
2800 line = line.replace(line.substring(line
2801 .indexOf('<'), line
2802 .lastIndexOf('/') + 1), "\"");
2803 line = line.replace('>', '\"');
2804 }
2805 fw.write(line + "\r\n");
2806 }
2807 fw.flush();
2808 fw.close();
2809 br.close(); // 关闭文件
2810 } catch (IOException e) {
2811 e.printStackTrace();
2812 }
2813 }
2814 }
2815 count = all.size();
2816 }
2817 }
2818 }
2819 }
2820 
2821 public static void main(String[] args) {
2822 try {
2823 new InlineXercesc("xercesc");
2824 // 将数据写入文件
2825 try {
2826 FileWriter fw = new FileWriter(CurDir + "\\DetailCpp.cmd");
2827 fw.write("copy StdAfx.cpp+*.c+*.cpp " + CurDir
2828 + "\\StdAfx.cpp && del *.c && del *.cpp");
2829 fw.flush();
2830 fw.close();
2831 } catch (IOException e) {
2832 e.printStackTrace();
2833 }
2834 } catch (IOException e) {
2835 }
2836 }
2837 }
2838 
2839 80.提取包含头文件列表
2840 import java.io.*;
2841 import java.util.regex.*;
2842 import java.util.*;
2843 public class InlineExt {
2844 private String CurDir = System.getProperty("user.dir");
2845 public InlineExt() {
2846 Pattern pattern = Pattern.compile("include.*?\".*?.hpp\""); // 第一个参数为需要匹配的字符串
2847 Matcher matcher = pattern.matcher("");
2848 File delfile = new File(CurDir);
2849 File[] files2 = delfile.listFiles();
2850 for (int l = 0; l < files2.length; l++) {
2851 if (files2[l].isDirectory()) {
2852 Set<String> ts = new LinkedHashSet<String>();
2853 File file = new File(files2[l].getPath(), "StdAfx.cpp");
2854 BufferedReader br = null;
2855 FileWriter fw = null;
2856 String line;
2857 try {
2858 br = new BufferedReader(new FileReader(file)); // 打开文件
2859 while ((line = br.readLine()) != null) {
2860 matcher.reset(line); // 匹配字符串
2861 if (matcher.find()) { // 如果有匹配的字符串,则输出
2862 ts.add(line.substring(line.indexOf('\"') + 1, line
2863 .lastIndexOf('\"')));
2864 }
2865 }
2866 Iterator<String> it = ts.iterator();
2867 File file2 = new File(files2[l], "ReadMe.txt");
2868 if (file2.exists()) {
2869 fw = new FileWriter(file2);
2870 while (it.hasNext()) {
2871 fw.write("#include \"" + it.next() + "\"\r\n");
2872 }
2873 }
2874 } catch (IOException e) {
2875 // 没有打开文件,则产生异常
2876 System.err.println("Cannot read '" + file + "': "
2877 + e.getMessage());
2878 continue;
2879 } finally {
2880 try {
2881 if (br != null)
2882 br.close();
2883 if (fw != null)
2884 fw.close();
2885 } catch (IOException e) {
2886 e.printStackTrace();
2887 }
2888 }
2889 }
2890 }
2891 }
2892 public static void main(String[] args) {
2893 new InlineExt();
2894 }
2895 }
2896 
2897 81.GB2312文件转Unicode格式
2898 
2899 
2900 82.Java程序打包
2901 /*
2902 import java.io.*;
2903 import java.util.*;
2904 private static String className;
2905 private static File myFilePath;
2906 */
2907 String path=%%1;
2908 ProcessBuilder pb = null;
2909 myFilePath = new File(path, "conf.txt");
2910 LinkedList<String> folderList = new LinkedList<String>();
2911 folderList.add(path);
2912 while (folderList.size() > 0) {
2913 File file = new File((String)folderList.poll());
2914 File[] files = file.listFiles();
2915 for (int i = 0; i < files.length; i++) {
2916 if (files[i].isDirectory()) {
2917 folderList.add(files[i].getPath());
2918 } else {
2919 if (files[i].getName().substring(2).contains(".")
2920 && files[i].getName().substring(
2921 files[i].getName().lastIndexOf('.'))
2922 .equals(".java")) {
2923 
2924 try {
2925 className = files[i].getName().substring(0,
2926 files[i].getName().lastIndexOf('.'));
2927 if (!myFilePath.exists())
2928 myFilePath.createNewFile();
2929 FileWriter resultFile = new FileWriter(myFilePath);
2930 PrintWriter myFile = new PrintWriter(resultFile);
2931 myFile.println("Main-Class:" + className);
2932 myFile.flush();
2933 myFile.close();
2934 resultFile.close();
2935 pb = new ProcessBuilder("javac", files[i]
2936 .getAbsolutePath()
2937 + " && jar cmf "
2938 + myFilePath.getAbsolutePath()
2939 + " "
2940 + className
2941 + ".jar "
2942 + className
2943 + ".class");
2944 pb.start();
2945 } catch (IOException e) {
2946 e.printStackTrace();
2947 }
2948 }
2949 }
2950 }
2951 }
2952 folderList = new LinkedList<String>();
2953 folderList.add(path);
2954 while (folderList.size() > 0) {
2955 File file = new File((String)folderList.poll());
2956 File[] files = file.listFiles();
2957 for (int i = 0; i < files.length; i++) {
2958 if (files[i].isDirectory()) {
2959 folderList.add(files[i].getPath());
2960 } else {
2961 if (files[i].getName().substring(2).contains(".")
2962 && files[i].getName().substring(
2963 files[i].getName().lastIndexOf('.'))
2964 .equals(".class")) {
2965 files[i].delete();
2966 }
2967 }
2968 }
2969 }
2970 
2971 83.UTF-8文件转Unicode格式
2972 /**
2973 * utf-8 转换成 unicode
2974 * @author fanhui
2975 * 2007-3-15
2976 * @param inStr
2977 * @return
2978 */
2979 public static String utf8ToUnicode(String inStr) {
2980 char[] myBuffer = inStr.toCharArray();
2981 
2982 StringBuffer sb = new StringBuffer();
2983 for (int i = 0; i < inStr.length(); i++) {
2984 UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);
2985 if(ub == UnicodeBlock.BASIC_LATIN){
2986 //英文及数字等
2987 sb.append(myBuffer[i]);
2988 }else if(ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){
2989 //全角半角字符
2990 int j = (int) myBuffer[i] - 65248;
2991 sb.append((char)j);
2992 }else{
2993 //汉字
2994 short s = (short) myBuffer[i];
2995 String hexS = Integer.toHexString(s);
2996 String unicode = "\\u"+hexS;
2997 sb.append(unicode.toLowerCase());
2998 }
2999 }
3000 return sb.toString();
3001 }
3002 
3003 84.创建PDF文档
3004 /*
3005 http://www.lowagie.com/iText/
3006 http://jaist.dl.sourceforge.net/sourceforge/itext/itext-1.4.jar
3007 http://itextdocs.lowagie.com/downloads/iTextAsian.jar
3008 http://itextdocs.lowagie.com/downloads/iTextAsianCmaps.jar
3009 import java.io.*;
3010 import com.lowagie.text.*;
3011 import com.lowagie.text.pdf.PdfWriter;
3012 */
3013 Document document = new Document();
3014 try
3015 {
3016 PdfWriter.getInstance(document, new FileOutputStream(%%1)); //"HelloWorld.pdf"
3017 // 添加PDF文档的一些信息
3018 document.addTitle("Hello World example");
3019 document.addAuthor("Bruno Lowagie");
3020 document.addSubject("This example explains how to add metadata.");
3021 document.addKeywords("iText, Hello World, step 3, metadata");
3022 document.addCreator("My program using iText");
3023 document.open();
3024 // 插入一个段落
3025 document.add(new Paragraph("Hello World!"));
3026 
3027 }
3028 catch (DocumentException de)
3029 {
3030 System.err.println(de.getMessage());
3031 }
3032 catch (IOException ioe)
3033 {
3034 System.err.println(ioe.getMessage());
3035 }
3036 
3037 // 关闭打开的文档
3038 document.close();
3039 
3040 三、中文问题:
3041 
3042 由于iText不支持东亚语言,我们下载了iTextAsian.jar 以后,就可以在PDF里面写中文:
3043 
3044 /**
3045 * AsianTest.java
3046 */
3047 import java.io.*;
3048 import com.lowagie.text.*;
3049 import com.lowagie.text.pdf.*;
3050 import java.awt.*;
3051 
3052 public class AsianTest{
3053 
3054 public static void main(String[] args) {
3055 
3056 // 创建一个Document对象
3057 Document document = new Document();
3058 
3059 try
3060 {
3061 
3062 // 生成名为 AsianTest.pdf 的文档
3063 PdfWriter.getInstance(document, new FileOutputStream("AsianTest.pdf"));
3064 
3065 /** 新建一个字体,iText的方法
3066 * STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀
3067 * UniGB-UCS2-H 是编码,在iTextAsian.jar 中以cmap为后缀
3068 * H 代表文字版式是 横版, 相应的 V 代表 竖版
3069 */
3070 BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
3071 
3072 Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);
3073 
3074 // 打开文档,将要写入内容
3075 document.open();
3076 
3077 // 插入一个段落
3078 Paragraph par = new Paragraph("我们",fontChinese);
3079 
3080 document.add(par);
3081 
3082 }
3083 catch (DocumentException de)
3084 {
3085 System.err.println(de.getMessage());
3086 }
3087 catch (IOException ioe)
3088 {
3089 System.err.println(ioe.getMessage());
3090 }
3091 
3092 // 关闭打开的文档
3093 document.close();
3094 }
3095 }
3096 
3097 就可以显示中文了。
3098 
3099 
3100 四、其他问题:(应导入相应的包)
3101 
3102 1. 换页:
3103 
3104 document.newPage();
3105 
3106 2. 表格:
3107 
3108 // 设置 Table
3109 Table aTable = new Table(3);
3110 int width[] = {25,25,50};
3111 aTable.setWidths(width);
3112 aTable.setWidth(80); // 占页面宽度 80%
3113 
3114 aTable.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
3115 aTable.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);
3116 aTable.setAutoFillEmptyCells(true); //自动填满
3117 aTable.setPadding(1);
3118 aTable.setSpacing(1);
3119 aTable.setDefaultCellBorder(0);
3120 aTable.setBorder(0);
3121 
3122 Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据", fontChinese ));
3123 cell.setVerticalAlignment(Element.ALIGN_TOP);
3124 cell.setRowspan(3);
3125 aTable.addCell(cell);
3126 
3127 aTable.addCell(new Cell("#1"));
3128 aTable.addCell(new Cell("#2"));
3129 aTable.addCell(new Cell("#3"));
3130 
3131 aTable.addCell(new Cell("#4"));
3132 aTable.addCell(new Cell("#5"));
3133 aTable.addCell(new Cell("#6"));
3134 
3135 document.add(aTable);
3136 
3137 3. 图片:
3138 
3139 // 可以是绝对路径,也可以是URL
3140 Image img = Image.getInstance("logo.gif");
3141 
3142 // Image image = Image.getInstance(new URL(http://xxx.com/logo.jpg));
3143 
3144 img.setAbsolutePosition(0, 0);
3145 
3146 document.add(img);
3147 
3148 五、参考文档:
3149 
3150 iText
3151 http://www.lowagie.com/iText/
3152 
3153 iText API:
3154 http://itext.sourceforge.net/docs/
3155 
3156 http://www.sentom.net/list.asp?id=42
3157 
3158 85.创建Word文档
3159 /*
3160 import java.awt.*;
3161 import java.io.*;
3162 import com.lowagie.text.*;
3163 import com.lowagie.text.pdf.*;
3164 import com.lowagie.text.rtf.*;
3165 */
3166 public void createDocContext(String file) throws DocumentException,
3167 IOException {
3168 // 设置纸张大小
3169 Document document = new Document(PageSize.A4);
3170 // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
3171 RtfWriter2.getInstance(document, new FileOutputStream(file));
3172 document.open();
3173 // 设置中文字体
3174 BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",
3175 "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
3176 // 标题字体风格
3177 Font titleFont = new Font(bfChinese, 12, Font.BOLD);
3178 // 正文字体风格
3179 Font contextFont = new Font(bfChinese, 10, Font.NORMAL);
3180 Paragraph title = new Paragraph("标题");
3181 // 设置标题格式对齐方式
3182 title.setAlignment(Element.ALIGN_CENTER);
3183 title.setFont(titleFont);
3184 document.add(title);
3185 
3186 String contextString = "iText是一个能够快速产生PDF文件的java类库。"
3187 + " \n"// 换行
3188 + "iText的java类对于那些要产生包含文本,"
3189 + "表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。"
3190 + "使用iText与PDF能够使你正确的控制Servlet的输出。";
3191 Paragraph context = new Paragraph(contextString);
3192 // 正文格式左对齐
3193 context.setAlignment(Element.ALIGN_LEFT);
3194 context.setFont(contextFont);
3195 // 离上一段落(标题)空的行数
3196 context.setSpacingBefore(5);
3197 // 设置第一行空的列数
3198 context.setFirstLineIndent(20);
3199 document.add(context);
3200 
3201 //利用类FontFactory结合Font和Color可以设置各种各样字体样式
3202 /**
3203 * Font.UNDERLINE 下划线,Font.BOLD 粗体
3204 */
3205 Paragraph underline = new Paragraph("下划线的实现", FontFactory.getFont(
3206 FontFactory.HELVETICA_BOLDOBLIQUE, 18, Font.UNDERLINE,
3207 new Color(0, 0, 255)));
3208 document.add(underline);
3209 
3210 // 设置 Table 表格
3211 Table aTable = new Table(3);
3212 int width[] = {25,25,50};
3213 aTable.setWidths(width);//设置每列所占比例
3214 aTable.setWidth(90); // 占页面宽度 90%
3215 
3216 aTable.setAlignment(Element.ALIGN_CENTER);//居中显示
3217 aTable.setAlignment(Element.ALIGN_MIDDLE);//纵向居中显示
3218 aTable.setAutoFillEmptyCells(true); //自动填满
3219 aTable.setBorderWidth(1); //边框宽度
3220 aTable.setBorderColor(new Color(0, 125, 255)); //边框颜色
3221 aTable.setPadding(2);//衬距,看效果就知道什么意思了
3222 aTable.setSpacing(3);//即单元格之间的间距
3223 aTable.setBorder(2);//边框
3224 
3225 //设置表头
3226 /**
3227 * cell.setHeader(true);是将该单元格作为表头信息显示;
3228 * cell.setColspan(3);指定了该单元格占3列;
3229 * 为表格添加表头信息时,要注意的是一旦表头信息添加完了之后,
3230 * 必须调用 endHeaders()方法,否则当表格跨页后,表头信息不会再显示
3231 */
3232 Cell haderCell = new Cell("表格表头");
3233 haderCell.setHeader(true);
3234 haderCell.setColspan(3);
3235 aTable.addCell(haderCell);
3236 aTable.endHeaders();
3237 
3238 Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);
3239 Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据", fontChinese ));
3240 cell.setVerticalAlignment(Element.ALIGN_TOP);
3241 cell.setBorderColor(new Color(255, 0, 0));
3242 cell.setRowspan(2);
3243 aTable.addCell(cell);
3244 
3245 aTable.addCell(new Cell("#1"));
3246 aTable.addCell(new Cell("#2"));
3247 aTable.addCell(new Cell("#3"));
3248 aTable.addCell(new Cell("#4"));
3249 Cell cell3 = new Cell(new Phrase("一行三列数据", fontChinese ));
3250 cell3.setColspan(3);
3251 cell3.setVerticalAlignment(Element.ALIGN_CENTER);
3252 aTable.addCell(cell3);
3253 
3254 document.add(aTable);
3255 document.add(new Paragraph("\n"));
3256 //添加图片
3257 Image img=Image.getInstance("d:\\img01800.jpg");
3258 img.setAbsolutePosition(0, 0);
3259 img.setAlignment(Image.RIGHT);//设置图片显示位置
3260 img.scaleAbsolute(12,35);//直接设定显示尺寸
3261 img.scalePercent(50);//表示显示的大小为原尺寸的50%
3262 img.scalePercent(25, 12);//图像高宽的显示比例
3263 img.setRotation(30);//图像旋转一定角度
3264 document.add(img);
3265 
3266 document.close();
3267 }
3268 
3269 /**
3270 * @param args
3271 */
3272 public static void main(String[] args) {
3273 CreateWordDemo word = new CreateWordDemo();
3274 String file = "c:/demo1.doc";
3275 try {
3276 word.createDocContext(file);
3277 } catch (DocumentException e) {
3278 e.printStackTrace();
3279 } catch (IOException e) {
3280 e.printStackTrace();
3281 }
3282 }
3283 
3284 /* 内部线程类 */
3285 class Son extends Thread
3286 {
3287 private ICallBack event;
3288 public Son(ICallBack callback)
3289 {
3290 event=callback;
3291 }
3292 public void run()
3293 {
3294 try
3295 {
3296 java.text.SimpleDateFormat fmt=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
3297 while(true)
3298 {
3299 Thread.currentThread().sleep(3000);
3300 event.output(fmt.format(new java.util.Date()));
3301 Thread.currentThread().sleep(3000);
3302 }
3303 }
3304 catch (Exception e)
3305 {
3306 }
3307 }
3308 }
3309 
3310 /* 回调接口 */
3311 interface ICallBack
3312 {
3313 public void output();
3314 }
3315 
3316 86.快速高效的文件加密
3317 /*
3318 import java.util.*;
3319 import java.io.*;
3320 import javax.swing.*;
3321 */
3322 private static final String CharSet = "0123456789ABCDEF";
3323 private static final int a[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3324 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
3325 private static final int b[] = { 3, 3, 3, 5, 5, 3, 3, 3, 5, 3, 5, 3, 7, 3,
3326 11, 7, 11, 3, 5, 3, 3, 3, 7, 5, 5, 3, 7, 3, 11, 13, 3 };
3327 private static final int c[] = { 3, 5, 7, 5, 7, 11, 13, 19, 17, 29, 19, 31,
3328 17, 41, 11, 19, 13, 47, 29, 53, 59, 67, 29, 41, 43, 71, 31, 73, 23,
3329 23, 101 };
3330 private static final int d[] = { 5, 7, 11, 13, 17, 17, 19, 29, 43, 43, 47,
3331 47, 59, 61, 61, 67, 71, 71, 73, 79, 89, 101, 101, 103, 107, 107,
3332 109, 109, 127, 149, 151 };
3333 private static int ka, kb, kc, kd;
3334 
3335 private static void init() {
3336 Date t1 = new Date();
3337 Date t2 = new Date(79, 8, 23, 8, 30, 0); // "9-23-1979 8:30"
3338 int GetDays = 0;
3339 int result = 0;
3340 Calendar start = new GregorianCalendar();
3341 Calendar end = new GregorianCalendar();
3342 start.setTime(t2);
3343 end.setTime(t1);
3344 Calendar startCalendar = start;
3345 int startYear = start.get(Calendar.YEAR);
3346 int startMonth = start.get(Calendar.MONTH);
3347 int startDayOfM = start.get(Calendar.DAY_OF_MONTH);
3348 int startDayOfY = start.get(Calendar.DAY_OF_YEAR);
3349 
3350 Calendar endCalendar = end;
3351 int endYear = end.get(Calendar.YEAR);
3352 int endMonth = end.get(Calendar.MONTH);
3353 int endDayOfM = end.get(Calendar.DAY_OF_MONTH);
3354 int endDayOfY = end.get(Calendar.DAY_OF_YEAR);
3355 int startLastYear = 0, startLastDayOfY = 0;
3356 if (endYear == startYear) {
3357 startLastYear = endDayOfY < startDayOfY ? startYear : endYear;
3358 startLastDayOfY = endDayOfY < startDayOfY ? startDayOfY : endDayOfY;
3359 } else if (endYear < startYear) {
3360 startLastYear = startYear;
3361 startLastDayOfY = startDayOfY;
3362 } else {
3363 startLastYear = endYear;
3364 startLastDayOfY = endDayOfY;
3365 }
3366 
3367 if ((endYear == startYear && endDayOfY == startDayOfY)
3368 || (startLastYear == startYear && startLastDayOfY == startDayOfY)) {
3369 GetDays = result;
3370 } else if (startYear == endYear) {
3371 GetDays = endDayOfY - startDayOfY;
3372 } else {
3373 Calendar tmp = Calendar.getInstance();
3374 result = startCalendar.getActualMaximum(Calendar.DAY_OF_YEAR)
3375 - startDayOfY;
3376 for (int i = startYear + 1; i < endYear; i++) {
3377 tmp.set(i, tmp.get(Calendar.MONTH), tmp
3378 .get(Calendar.DAY_OF_MONTH));
3379 result += tmp.getActualMaximum(Calendar.DAY_OF_YEAR);
3380 }
3381 result += end.get(Calendar.DAY_OF_YEAR);
3382 GetDays = result;
3383 }
3384 Random rand = new Random(GetDays * 8 - 55);
3385 int r = rand.nextInt(GetDaysInMoths(t2.getMonth() + 1));
3386 r=0;
3387 ka = a[r];
3388 kb = b[r];
3389 kc = c[r];
3390 kd = d[r];
3391 }
3392 
3393 private static int GetDaysInMoths(int nMoths) {
3394 switch (nMoths) {
3395 case 2: {
3396 int nYear = new Date().getYear() + 1900;
3397 if ((nYear % 4 == 0) && (nYear % 400) != 0) {
3398 return 29;
3399 } else {
3400 return 28;
3401 }
3402 }
3403 case 1:
3404 case 3:
3405 case 5:
3406 case 7:
3407 case 8:
3408 case 10:
3409 case 12:
3410 return 31;
3411 case 4:
3412 case 6:
3413 case 9:
3414 case 11:
3415 return 30;
3416 default:
3417 return -1;
3418 }
3419 }
3420 
3421 private static int niyuan(int m, int n) {
3422 int a, b, c, d, t, yu = 0, shang, mod;
3423 a = m;
3424 b = n;
3425 mod = a;
3426 c = 0;
3427 d = 1;
3428 while (b < 0)
3429 b += a;
3430 if (a % b == 0 || b % 2 == 0)
3431 return 0;
3432 while (b != 1) {
3433 t = a % b;
3434 shang = a / b;
3435 a = b;
3436 b = t;
3437 yu = c - shang * d;
3438 c = d;
3439 d = yu;
3440 }
3441 if (yu < 0)
3442 yu += mod;
3443 return yu;
3444 }
3445 JFileChooser chooser = new JFileChooser();
3446 chooser.setCurrentDirectory(new File("E:"));
3447 chooser
3448 .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
3449 public boolean accept(File f) {
3450 return f.getName().toLowerCase().endsWith(".zip")
3451 || f.isDirectory();
3452 }
3453 
3454 public String getDescription() {
3455 return "Compress Files(*.zip)";
3456 }
3457 });
3458 chooser
3459 .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
3460 public boolean accept(File f) {
3461 return f.getName().toLowerCase().endsWith(".txt")
3462 || f.isDirectory();
3463 }
3464 
3465 public String getDescription() {
3466 return "Text Files(*.txt)";
3467 }
3468 });
3469 chooser
3470 .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
3471 public boolean accept(File f) {
3472 return f.getName().toLowerCase().endsWith(".exe")
3473 || f.isDirectory();
3474 }
3475 
3476 public String getDescription() {
3477 return "Executeable Files(*.exe)";
3478 }
3479 });
3480 if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
3481 String name = chooser.getSelectedFile().getPath();
3482 JFileChooser chooser2 = new JFileChooser();
3483 chooser2.setCurrentDirectory(new File("E:"));
3484 if (name.substring(name.lastIndexOf('.')).equals(".txt")) {
3485 char[] sRead = new char[10240];
3486 char[] hexstr = new char[10240];
3487 char[] pbuf = new char[20480];
3488 char[] rRead = new char[20480];
3489 char[] out2 = new char[10240];
3490 chooser2
3491 .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
3492 public boolean accept(File f) {
3493 return f.getName().toLowerCase().endsWith(
3494 ".zip")
3495 || f.isDirectory();
3496 }
3497 
3498 public String getDescription() {
3499 return "Compress Files(*.zip)";
3500 }
3501 });
3502 chooser2
3503 .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {
3504 public boolean accept(File f) {
3505 return f.getName().toLowerCase().endsWith(
3506 ".exe")
3507 || f.isDirectory();
3508 }
3509 
3510 public String getDescription() {
3511 return "Executeable Files(*.exe)";
3512 }
3513 });
3514 if (chooser2.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
3515 init();
3516 FileOutputStream fw = null;
3517 try {
3518 FileInputStream fis = new FileInputStream(chooser
3519 .getSelectedFile());
3520 fw = new FileOutputStream(chooser2.getSelectedFile());
3521 byte[] buffer = new byte[20480];
3522 int js = 0, tmp;
3523 int aany, ddny;
3524 int r00 = ka * kc * kd;
3525 int r01 = -ka * kb * kc;
3526 int r10 = -kb * kc * kc;
3527 int r11 = ka * kb * kc;
3528 int x00 = ka * ka * kc * kd - ka * kb * kc * kc;
3529 int x11 = ka * kb * kc * kd - kb * kb * kc * kc;
3530 while (x00 % 2 == 0) {
3531 x00 /= 2;
3532 r00 /= 2;
3533 r01 /= 2;
3534 }
3535 while (x11 % 2 == 0) {
3536 x11 /= 2;
3537 r10 /= 2;
3538 r11 /= 2;
3539 }
3540 aany = x00;
3541 ddny = x11;
3542 if (niyuan(1024, aany) != 0 && niyuan(1024, ddny) != 0) {
3543 int kn00 = r00 * niyuan(1024, x00);
3544 int kn01 = r01 * niyuan(1024, x00);
3545 int kn10 = r10 * niyuan(1024, x11);
3546 int kn11 = r11 * niyuan(1024, x11);
3547 ka = kn00;
3548 kb = kn01;
3549 kc = kn10;
3550 kd = kn11;
3551 } else {
3552 JOptionPane.showMessageDialog(null, "无逆矩阵!");
3553 System.exit(0);
3554 }
3555 while (ka < 0)
3556 ka += 1024;
3557 while (kb < 0)
3558 kb += 1024;
3559 while (kc < 0)
3560 kc += 1024;
3561 while (kd < 0)
3562 kd += 1024;
3563 ka %= 1024;
3564 kb %= 1024;
3565 kc %= 1024;
3566 kd %= 1024;
3567 try {
3568 int byteread;
3569 while ((byteread = fis.read(buffer)) != -1) {
3570 int nLen = byteread / 2;
3571 byte[] sming = new byte[nLen];
3572 String chs = new String(buffer, "US-ASCII");
3573 for (int i = 0; i < nLen; i++) {
3574 byte bTmp;
3575 if (byteread < 2)
3576 bTmp = -1;
3577 bTmp = (byte) (CharSet.indexOf(chs
3578 .substring(i * 2, i * 2 + 1)) * 16 + CharSet
3579 .indexOf(chs.substring(i * 2 + 1,
3580 i * 2 + 2)));
3581 sming[i] = bTmp;
3582 }
3583 if (nLen % 2 != 0)
3584 js = 1;
3585 for (int i = 0; i < nLen - 1; i += 2) {
3586 char c1 = (char) sming[i];
3587 char c2 = (char) sming[i + 1];
3588 tmp = ka * c1 + kc * c2;
3589 while (tmp < 0)
3590 tmp += 1024;
3591 char s1 = (char) (tmp % 1024);
3592 fw.write(s1);
3593 tmp = kb * c1 + kd * c2;
3594 while (tmp < 0)
3595 tmp += 1024;
3596 char s2 = (char) (tmp % 1024);
3597 fw.write(s2);
3598 }
3599 if (js == 1) {
3600 char c3 = (char) ((sming[nLen - 1] - 4) % 1024);
3601 fw.write(c3);
3602 }
3603 }
3604 fw.flush();
3605 } catch (IOException e) {
3606 e.printStackTrace();
3607 } finally {
3608 try {
3609 fis.close();
3610 fw.close();
3611 } catch (IOException e) {
3612 e.printStackTrace();
3613 }
3614 }
3615 } catch (FileNotFoundException e1) {
3616 e1.printStackTrace();
3617 }
3618 if(!chooser2.getFileFilter().accept(chooser2.getSelectedFile())){
3619 if(chooser2.getFileFilter().getDescription().equals("Compress Files(*.zip)"))
3620 chooser2.getSelectedFile().renameTo(new File(chooser2.getSelectedFile().getAbsolutePath()+".zip"));
3621 else if(chooser2.getFileFilter().getDescription().equals("Executeable Files(*.exe)"))
3622 chooser2.getSelectedFile().renameTo(new File(chooser2.getSelectedFile().getAbsolutePath()+".exe"));
3623 }
3624 
3625 }
3626 } else {
3627 chooser2
3628 .setFileFilter(new javax.swing.filechooser.FileFilter() {
3629 public boolean accept(File f) {
3630 return f.getName().toLowerCase().endsWith(
3631 ".txt")
3632 || f.isDirectory();
3633 }
3634 
3635 public String getDescription() {
3636 return "Text Files";
3637 }
3638 });
3639 if (chooser2.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
3640 
3641 if (chooser2.getSelectedFile() != null) {
3642 init();
3643 File oldfile = chooser.getSelectedFile();
3644 FileInputStream inStream = null;
3645 FileWriter fw = null;
3646 try {
3647 if (oldfile.exists()) {
3648 inStream = new FileInputStream(oldfile);
3649 fw = new FileWriter(chooser2.getSelectedFile());
3650 byte[] sRead = new byte[10240];
3651 int byteread;
3652 while ((byteread = inStream.read(sRead)) != -1) {
3653 StringBuilder smi = new StringBuilder(
3654 byteread * 2);
3655 int js = 0;
3656 if (byteread % 2 != 0)
3657 js = 1;
3658 for (int i = 0; i < byteread - 1; i += 2) {
3659 char c1 = (char) sRead[i];
3660 char c2 = (char) sRead[i + 1];
3661 int tmp = ka * c1 + kc * c2;
3662 while (tmp < 0)
3663 tmp += 1024;
3664 byte s1 = (byte) (tmp % 1024);
3665 int js1 = (int) s1 >> 4 & 0xf;
3666 smi.append(CharSet.substring(js1,
3667 js1 + 1));
3668 int ks1 = s1 & 0xf;
3669 smi.append(CharSet.substring(ks1,
3670 ks1 + 1));
3671 tmp = kb * c1 + kd * c2;
3672 while (tmp < 0)
3673 tmp += 1024;
3674 byte s2 = (byte) (tmp % 1024);
3675 int js2 = (int) s2 >> 4 & 0xf;
3676 smi.append(CharSet.substring(js2,
3677 js2 + 1));
3678 int ks2 = s2 & 0xf;
3679 smi.append(CharSet.substring(ks2,
3680 ks2 + 1));
3681 }
3682 if (js == 1) {
3683 byte s3 = (byte) ((sRead[byteread - 1] - 4) % 1024);
3684 int js3 = (int) s3 >> 4 & 0xf;
3685 smi.append(CharSet.substring(js3,
3686 js3 + 1));
3687 int ks3 = (int) s3 & 0xf;
3688 smi.append(CharSet.substring(ks3,
3689 ks3 + 1));
3690 }
3691 fw.write(smi.toString());
3692 }
3693 fw.flush();
3694 }
3695 } catch (IOException e) {
3696 e.printStackTrace();
3697 } finally {
3698 try {
3699 fw.close();
3700 inStream.close();
3701 } catch (IOException e) {
3702 e.printStackTrace();
3703 }
3704 }
3705 if(!chooser2.getFileFilter().accept(chooser2.getSelectedFile()))
3706 chooser2.getSelectedFile().renameTo(new File(chooser2.getSelectedFile().getAbsolutePath()+".txt"));
3707 }
3708 }
3709 }
3710 }
3711 
3712 87.菜单勾选/取消开机自启动程序
3713 
3714 88.菜单勾选/取消自动登录系统
3715 
3716 89.模拟键盘输入字符串
3717 /*
3718 import java.awt.*;
3719 import java.awt.event.*;
3720 throws Exception{
3721 */
3722 static Robot robot;
3723 static{
3724 try {
3725 robot = new Robot();
3726 } catch (AWTException e) {}
3727 }
3728 
3729 static void sendKey(String ks){
3730 KeyStore k = KeyStore.findKeyStore(ks);
3731 if(k!=null){
3732 if(k.upCase)
3733 upCase(k.v);
3734 else
3735 sendKey(k.v);
3736 }
3737 else{
3738 for(int i=0; i<ks.length(); i++){
3739 char c = ks.charAt(i);
3740 if(c>='0'&&c<='9'){
3741 sendKey(c);
3742 }
3743 else if(c>='a'&&c<='z'){
3744 sendKey(c-32);
3745 }
3746 else if(c>='A'&&c<='Z'){
3747 upCase(c);
3748 }
3749 }
3750 }
3751 }
3752 private static void upCase(int kc){
3753 robot.keyPress(KeyEvent.VK_SHIFT);
3754 robot.keyPress(kc);
3755 robot.keyRelease(kc);
3756 robot.keyRelease(KeyEvent.VK_SHIFT);
3757 }
3758 private static void sendKey(int kc){
3759 robot.keyPress(kc);
3760 robot.keyRelease(kc);
3761 }
3762 static class KeyStore{
3763 //special keys
3764 final static KeyStore[] sp = {
3765 new KeyStore("{Tab}",KeyEvent.VK_TAB),//tab
3766 new KeyStore("{Enter}",KeyEvent.VK_ENTER),//enter
3767 new KeyStore("{PUp}",KeyEvent.VK_PAGE_UP),//page up
3768 new KeyStore("{<}",KeyEvent.VK_LESS),//<
3769 new KeyStore("{Up}",KeyEvent.VK_UP),//up key
3770 new KeyStore("{At}",KeyEvent.VK_AT,true),//@
3771 new KeyStore("{Dollar}",KeyEvent.VK_DOLLAR,true),//$
3772 };
3773 
3774 String k;
3775 int v;
3776 boolean upCase;
3777 KeyStore(String k,int v){
3778 this(k,v,false);
3779 }
3780 
3781 KeyStore(String s,int i,boolean up){
3782 k=s;
3783 v=i;
3784 upCase=up;
3785 }
3786 static KeyStore findKeyStore(String k){
3787 for(int i=0; i<sp.length; i++){
3788 if(sp[i].k.equals(k))
3789 return sp[i];
3790 }
3791 return null;
3792 }
3793 }
3794 Thread.sleep(1000);
3795 sendKey("{Tab}");//tab
3796 sendKey("{<}");//<
3797 sendKey("abcd123AHahahAA");//abcd123AHahahAA
3798 sendKey("{At}");//@
3799 sendKey("{Dollar}");//$
3800 sendKey("{Up}");//up arrow
3801 
3802 90.提取PDF文件中的文本
3803 //http://incubator.apache.org/pdfbox/
3804 /*
3805 import java.io.*;
3806 import org.pdfbox.pdfparser.*;
3807 import org.pdfbox.pdmodel.*;
3808 import org.pdfbox.util.*;
3809 */
3810 public class SimplePDFReader {
3811 /**
3812 * simply reader all the text from a pdf file.
3813 * You have to deal with the format of the output text by yourself.
3814 * 2008-2-25
3815 * @param pdfFilePath file path
3816 * @return all text in the pdf file
3817 */
3818 public static String getTextFromPDF(String pdfFilePath) {
3819 String result = null;
3820 FileInputStream is = null;
3821 PDDocument document = null;
3822 try {
3823 is = new FileInputStream(pdfFilePath);
3824 PDFParser parser = new PDFParser(is);
3825 parser.parse();
3826 document = parser.getPDDocument();
3827 PDFTextStripper stripper = new PDFTextStripper();
3828 result = stripper.getText(document);
3829 } catch (FileNotFoundException e) {
3830 // TODO Auto-generated catch block
3831 e.printStackTrace();
3832 } catch (IOException e) {
3833 // TODO Auto-generated catch block
3834 e.printStackTrace();
3835 } finally {
3836 if (is != null) {
3837 try {
3838 is.close();
3839 } catch (IOException e) {
3840 // TODO Auto-generated catch block
3841 e.printStackTrace();
3842 }
3843 }
3844 if (document != null) {
3845 try {
3846 document.close();
3847 } catch (IOException e) {
3848 // TODO Auto-generated catch block
3849 e.printStackTrace();
3850 }
3851 }
3852 }
3853 return result;
3854 }
3855 }
3856 得到PDF的文本内容之后,自己根据文件的格式,取得想要的文本(这里我找的就是文章的标题,在文本中恰巧都是文件的第一行的内容),然后通过java的File相关api,对文件进行更名操作。
3857 import java.io.File;
3858 import java.io.FilenameFilter;
3859 
3860 public class PaperNameMender {
3861 public static void changePaperName(String filePath) {
3862 //使用SimplePDFReader得到pdf文本
3863 String ts = SimplePDFReader.getTextFromPDF(filePath);
3864 //取得一行内容
3865 String result = ts.substring(0, ts.indexOf('\n'));
3866 //得到源文件名中的最后一个逗点.的位置
3867 int index = filePath.indexOf('.');
3868 int nextIndex = filePath.indexOf('.', index + 1);
3869 while(nextIndex != -1) {
3870 index = nextIndex;
3871 nextIndex = filePath.indexOf('.', index + 1);
3872 }
3873 //合成新文件名
3874 String newFilename = filePath.substring(0, index) + " " +
3875 result.trim() + ".pdf";
3876 File originalFile = new File(filePath);
3877 //修改文件名
3878 originalFile.renameTo(new File(newFilename));
3879 }
3880 }
3881 
3882 
3883 91.操作内存映射文件
3884 /*
3885 import java.io.*;
3886 import java.nio.*;
3887 import java.nio.channels.*;
3888 */
3889 private static int length = 0x8FFFFFF; // 128 Mb
3890 MappedByteBuffer out =
3891 new RandomAccessFile("test.dat", "rw").getChannel()
3892 .map(FileChannel.MapMode.READ_WRITE, 0, length);
3893 for(int i = 0; i < length; i++)
3894 out.put((byte)'x');
3895 for(int i = length/2; i < length/2 + 6; i++)
3896 //(char)out.get(i);
3897 
3898 92.重定向windows控制台程序的输出信息
3899 92.1 取得Runtime.getRuntime().exec("cmd /c dir")的输入输出
3900 //import java.io.*;
3901 try {
3902 String command = "cmd /c dir";
3903 Process proc = Runtime.getRuntime().exec(command);
3904 InputStreamReader ir = new InputStreamReader(proc.getInputStream());
3905 LineNumberReader lnr = new LineNumberReader(ir);
3906 String line;
3907 while( (line = lnr.readLine()) != null)
3908 {
3909 //line
3910 }
3911 } catch (IOException e) {
3912 e.printStackTrace();
3913 }
3914 
3915 92.2 利用ProcessBuilder来创建Process对象,执行外部可执行程序
3916 // //Eg1:
3917 // String address = null;
3918 //
3919 // String os = System.getProperty("os.name");
3920 // System.out.println(os);
3921 //
3922 // if (os != null) {
3923 // if (os.startsWith("Windows")) {
3924 // try {
3925 // ProcessBuilder pb = new ProcessBuilder("ipconfig", "/all");
3926 // Process p = pb.start();
3927 //
3928 // BufferedReader br = new BufferedReader(
3929 // new InputStreamReader(p.getInputStream()));
3930 //
3931 // String line;
3932 // while ((line = br.readLine()) != null) {
3933 // if (line.indexOf("Physical Address") != -1) {
3934 // int index = line.indexOf(":");
3935 // address = line.substring(index + 1);
3936 // break;
3937 // }
3938 // }
3939 // br.close();
3940 // address = address.trim();
3941 // } catch (IOException e) {
3942 // // TODO Auto-generated catch block
3943 // e.printStackTrace();
3944 // }
3945 // } else if (os.startsWith("Linux")) {
3946 // try {
3947 // ProcessBuilder pb = new ProcessBuilder(
3948 //
3949 // "ifconfig", "/all");
3950 //
3951 // Process p = pb.start();
3952 // BufferedReader br = new BufferedReader(
3953 // new InputStreamReader(p.getInputStream()));
3954 // String line;
3955 // while ((line = br.readLine()) != null) {
3956 // int index = line.indexOf("硬件地址");
3957 // if (index != -1) {
3958 // address = line.substring(index + 4);
3959 // break;
3960 // }
3961 // }
3962 // br.close();
3963 // address = address.trim();
3964 // } catch (IOException e) {
3965 // e.printStackTrace();
3966 // }
3967 // }
3968 // }
3969 
3970 // //Eg2:
3971 // try {
3972 // Process proc;
3973 // proc = Runtime.getRuntime().exec("cmd.exe");
3974 // BufferedReader read = new BufferedReader(new InputStreamReader(proc
3975 // .getInputStream()));
3976 // new Thread(new Echo(read)).start();
3977 //
3978 // PrintWriter out = new PrintWriter(new OutputStreamWriter(proc
3979 // .getOutputStream()));
3980 // BufferedReader in = new BufferedReader(new InputStreamReader(
3981 // System.in));
3982 // String instr = in.readLine();
3983 // while (!"exit".equals(instr)) {
3984 // instr = in.readLine();
3985 // out.println(instr);
3986 // out.flush();
3987 // }
3988 //
3989 // in.readLine();
3990 // read.close();
3991 // out.close();
3992 // } catch (IOException e) {
3993 // // TODO Auto-generated catch block
3994 // e.printStackTrace();
3995 // }
3996 
3997 }
3998 }
3999 
4000 class Echo implements Runnable {
4001 private BufferedReader read;
4002 
4003 public Echo(BufferedReader read) {
4004 read = read;
4005 }
4006 
4007 public void run() {
4008 try {
4009 String line = read.readLine();
4010 while (line != null) {
4011 //line
4012 line = read.readLine();
4013 }
4014 } catch (IOException ex) {
4015 ex.printStackTrace();
4016 }
4017 }
4018 }
4019 
4020 93.序列化
4021 //import java.io.*;
4022 class tree implements Serializable{
4023 public tree left;
4024 public tree right;
4025 public int id;
4026 public int level;
4027 
4028 private static int count = 0 ;
4029 
4030 public tree( int depth) {
4031 id = count ++ ;
4032 level = depth;
4033 if (depth > 0 ) {
4034 left = new tree(depth - 1 );
4035 right = new tree(depth - 1 );
4036 }
4037 }
4038 
4039 public void print( int levels) {
4040 for ( int i = 0 ; i < level; i ++ )
4041 System.out.print( " " );
4042 System.out.println( " node " + id);
4043 
4044 if (level <= levels && left != null )
4045 left.print(levels);
4046 
4047 if (level <= levels && right != null )
4048 right.print(levels);
4049 }
4050 }
4051 try {
4052 /**/ /* 创建一个文件写入序列化树。 */
4053 FileOutputStream ostream = new FileOutputStream(%%1);
4054 /**/ /* 创建输出流 */
4055 ObjectOutputStream p = new ObjectOutputStream(ostream);
4056 
4057 /**/ /* 创建一个二层的树。 */
4058 tree base = new tree( 2 );
4059 
4060 p.writeObject(base); // 将树写入流中。
4061 p.writeObject( " LiLy is 惠止南国 " );
4062 p.flush();
4063 ostream.close(); // 关闭文件。
4064 } catch (Exception ex) {
4065 ex.printStackTrace();
4066 }
4067 }
4068 
4069 94.反序列化
4070 //import java.io.*;
4071 class tree implements Serializable{
4072 public tree left;
4073 public tree right;
4074 public int id;
4075 public int level;
4076 
4077 private static int count = 0 ;
4078 
4079 public tree( int depth) {
4080 id = count ++ ;
4081 level = depth;
4082 if (depth > 0 ) {
4083 left = new tree(depth - 1 );
4084 right = new tree(depth - 1 );
4085 }
4086 }
4087 
4088 public void print( int levels) {
4089 for ( int i = 0 ; i < level; i ++ )
4090 System.out.print( " " );
4091 System.out.println( " node " + id);
4092 
4093 if (level <= levels && left != null )
4094 left.print(levels);
4095 
4096 if (level <= levels && right != null )
4097 right.print(levels);
4098 }
4099 }
4100 try {
4101 FileInputStream istream = new FileInputStream(%%1);
4102 ObjectInputStream q = new ObjectInputStream(istream);
4103 
4104 /**/ /* 读取树对象,以及所有子树 */
4105 tree new_tree = (tree)q.readObject();
4106 
4107 new_tree.print( 2 ); // 打印出树形结构的最上面 2级
4108 String name = (String)q.readObject();
4109 System.out.println( " \n " + name);
4110 } catch (Exception ex) {
4111 ex.printStackTrace();
4112 }
4113 }
4114 
4115 95.报表相关
4116 //http://www.jfree.org/jfreechart/
4117 /*
4118 import java.io.*;
4119 import java.awt.*;
4120 import org.jfree.chart.*;
4121 import org.jfree.chart.title.TextTitle;
4122 import org.jfree.data.general.*;
4123 */
4124 String title = "梦泽科技员工学历情况统计";
4125 DefaultPieDataset piedata = new DefaultPieDataset();
4126 piedata.setValue("大专", 8.1);
4127 piedata.setValue("大学", 27.6);
4128 piedata.setValue("硕士", 53.2);
4129 piedata.setValue("博士及以上", 19.2);
4130 piedata.setValue("大专以下", 1.9);
4131 JFreeChart chart = ChartFactory.createPieChart(title, piedata, true, true, true);
4132 chart.setTitle(new TextTitle(title, new Font("宋体", Font.BOLD, 25)));
4133 chart.addSubtitle(new TextTitle("最后更新日期:2005年5月19日", new Font("楷书", Font.ITALIC, 18)));
4134 chart.setBackgroundPaint(Color.white);
4135 try {
4136 ChartUtilities.saveChartAsJPEG(new File("PieChart.jpg"), chart, 360, 300);
4137 } catch (IOException exz) {
4138 System.err.print("....Cant′t Create image File");
4139 }
4140 
4141 96.全屏幕截取
4142 /*
4143 import java.awt.*;
4144 import java.awt.image.*;
4145 import java.io.*;
4146 import javax.imageio.*;
4147 */
4148 try{
4149 Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
4150 BufferedImage screenshot = (new Robot())
4151 .createScreenCapture(new Rectangle(0, 0,
4152 (int) d.getWidth(), (int) d.getHeight()));
4153 // 根据文件前缀变量和文件格式变量,自动生成文件名
4154 String name = %%1 + "."
4155 + %%2; //"png"
4156 File f = new File(name);
4157 ImageIO.write(screenshot, %%2, f);
4158 } catch (Exception ex) {
4159 ex.printStackTrace();
4160 }
4161 
4162 97.区域截屏
4163 /*
4164 import java.awt.*;
4165 import java.awt.image.*;
4166 import java.io.*;
4167 import java.util.*;
4168 import javax.imageio.*;
4169 */
4170 interface ImageType {
4171 public final static String JPG = "JPG";
4172 public final static String PNG = "PNG";
4173 public final static String GIF = "GIF";
4174 }
4175 public class ScreenDumpHelper {
4176 /** ScreenDumpHelper 静态对象 */
4177 private static ScreenDumpHelper defaultScreenDumpHelper;
4178 public static ScreenDumpHelper getDefaultScreenDumpHelper() {
4179 if (defaultScreenDumpHelper == null)
4180 return new ScreenDumpHelper();
4181 return defaultScreenDumpHelper;
4182 }
4183 public ScreenDumpHelper() {
4184 Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();
4185 setScreenArea(new Rectangle(dime));
4186 }
4187 private Rectangle screenArea;
4188 
4189 public Rectangle getScreenArea() {
4190 return screenArea;
4191 }
4192 
4193 public void setScreenArea(Rectangle screenArea) {
4194 screenArea = screenArea;
4195 }
4196 
4197 public void setScreenArea(int x, int y, int width, int height) {
4198 screenArea = new Rectangle(x, y, width, height);
4199 }
4200 private BufferedImage getBufferedImage() throws AWTException {
4201 BufferedImage imgBuf = null;
4202 ;
4203 imgBuf = (new Robot()).createScreenCapture(getScreenArea());
4204 return imgBuf;
4205 }
4206 
4207 /**
4208 * 将 图像数据写到 输出流中去,方便再处理
4209 *
4210 * @param fileFormat
4211 * @param output
4212 * @return
4213 */
4214 public boolean saveToOutputStream(String fileFormat, OutputStream output) {
4215 try {
4216 ImageIO.write(getBufferedImage(), fileFormat, output);
4217 } catch (AWTException e) {
4218 return false;
4219 // e.printStackTrace();
4220 } catch (IOException e) {
4221 return false;
4222 // e.printStackTrace();
4223 }
4224 return true;
4225 }
4226 
4227 /**
4228 * 根据文件格式 返回随机文件名称
4229 *
4230 * @param fileFormat
4231 * @return
4232 */
4233 public String getRandomFileName(String fileFormat) {
4234 return "screenDump_" + (new Date()).getTime() + "." + fileFormat;
4235 }
4236 
4237 /**
4238 * 抓取 指定区域的截图 到指定格式的文件中 -- 这个函数是核心,所有的都是围绕它来展开的 * 图片的编码并不是以后缀名来判断: 比如s.jpg
4239 * 如果其采用png编码,那么这个图片就是png格式的
4240 *
4241 * @param fileName
4242 * @param fileFormat
4243 * @return boolean
4244 */
4245 public boolean saveToFile(String fileName, String fileFormat) {
4246 if (fileName == null)
4247 fileName = getRandomFileName(fileFormat);
4248 try {
4249 FileOutputStream fos = new FileOutputStream(fileName);
4250 saveToOutputStream(fileFormat, fos);
4251 } catch (FileNotFoundException e) {
4252 System.err.println("非常规文件或不能创建抑或覆盖此文件: " + fileName);
4253 }
4254 return true;
4255 }
4256 
4257 /**
4258 * 抓取 指定 Rectangle 区域的截图 到指定格式的文件中
4259 *
4260 * @param fileName
4261 * @param fileFormat
4262 * @param screenArea
4263 * @return
4264 */
4265 public boolean saveToFile(String fileName, String fileFormat,
4266 Rectangle screenArea) {
4267 setScreenArea(screenArea);
4268 return saveToFile(fileName, fileFormat);
4269 }
4270 
4271 /**
4272 * 抓取 指定区域的截图 到指定格式的文件中
4273 *
4274 * @param fileName
4275 * @param fileFormat
4276 * @param x
4277 * @param y
4278 * @param width
4279 * @param height
4280 */
4281 public boolean saveToFile(String fileName, String fileFormat, int x, int y,
4282 int width, int height) {
4283 setScreenArea(x, y, width, height);
4284 return saveToFile(fileName, fileFormat);
4285 }
4286 
4287 /**
4288 * 将截图使用 JPG 编码
4289 *
4290 * @param fileName
4291 */
4292 public void saveToJPG(String fileName) {
4293 saveToFile(fileName, ImageType.JPG);
4294 }
4295 
4296 public void saveToJPG(String fileName, Rectangle screenArea) {
4297 saveToFile(fileName, ImageType.JPG, screenArea);
4298 }
4299 
4300 public void saveToJPG(String fileName, int x, int y, int width, int height) {
4301 saveToFile(fileName, ImageType.JPG, x, y, width, height);
4302 }
4303 
4304 /**
4305 * 将截图使用 PNG 编码
4306 *
4307 * @param fileName
4308 */
4309 public void saveToPNG(String fileName) {
4310 saveToFile(fileName, ImageType.PNG);
4311 }
4312 
4313 public void saveToPNG(String fileName, Rectangle screenArea) {
4314 saveToFile(fileName, ImageType.PNG, screenArea);
4315 }
4316 
4317 public void saveToPNG(String fileName, int x, int y, int width, int height) {
4318 saveToFile(fileName, ImageType.PNG, x, y, width, height);
4319 }
4320 
4321 public void saveToGIF(String fileName) {
4322 throw new UnsupportedOperationException("不支持保存到GIF文件");
4323 // saveToFile(fileName, ImageType.GIF);
4324 }
4325 
4326 /**
4327 * @param args
4328 */
4329 public static void main(String[] args) {
4330 for (int i = 0; i < 5; i++)
4331 ScreenDumpHelper.getDefaultScreenDumpHelper().saveToJPG(null,
4332 i * 150, i * 150, 400, 300);
4333 }
4334 }
4335 
4336 98.计算文件MD5值
4337 /*
4338 import java.io.*;
4339 import java.math.*;
4340 import java.security.*;
4341 import java.util.*;
4342 */
4343 File file=new File(%%1);
4344 if (!file.isFile()){
4345 return null;
4346 }
4347 MessageDigest digest = null;
4348 FileInputStream in=null;
4349 byte buffer[] = new byte[1024];
4350 int len;
4351 try {
4352 digest = MessageDigest.getInstance("MD5");
4353 in = new FileInputStream(file);
4354 while ((len = in.read(buffer, 0, 1024)) != -1) {
4355 digest.update(buffer, 0, len);
4356 }
4357 in.close();
4358 } catch (Exception e) {
4359 e.printStackTrace();
4360 return null;
4361 }
4362 BigInteger bigInt = new BigInteger(1, digest.digest());
4363 return bigInt.toString(16);
4364 }
4365 
4366 99.计算获取文件夹中文件的MD5值
4367 /*
4368 import java.io.*;
4369 import java.math.*;
4370 import java.security.*;
4371 import java.util.*;
4372 */
4373 public static String getFileMD5(File file) {
4374 if (!file.isFile()){
4375 return null;
4376 }
4377 MessageDigest digest = null;
4378 FileInputStream in=null;
4379 byte buffer[] = new byte[1024];
4380 int len;
4381 try {
4382 digest = MessageDigest.getInstance("MD5");
4383 in = new FileInputStream(file);
4384 while ((len = in.read(buffer, 0, 1024)) != -1) {
4385 digest.update(buffer, 0, len);
4386 }
4387 in.close();
4388 } catch (Exception e) {
4389 e.printStackTrace();
4390 return null;
4391 }
4392 BigInteger bigInt = new BigInteger(1, digest.digest());
4393 return bigInt.toString(16);
4394 }
4395 /**
4396 * 获取文件夹中文件的MD5值
4397 * @param file
4398 * @param listChild ;true递归子目录中的文件
4399 * @return
4400 */
4401 public static Map<String, String> getDirMD5(File file,boolean listChild) {
4402 if(!file.isDirectory()){
4403 return null;
4404 }
4405 //<filepath,md5>
4406 Map<String, String> map=new HashMap<String, String>();
4407 String md5;
4408 File files[]=file.listFiles();
4409 for(int i=0;i<files.length;i++){
4410 File f=files[i];
4411 if(f.isDirectory()&&listChild){
4412 map.putAll(getDirMD5(f, listChild));
4413 } else {
4414 md5=getFileMD5(f);
4415 if(md5!=null){
4416 map.put(f.getPath(), md5);
4417 }
4418 }
4419 }
4420 return map;
4421 }
4422 getDirMD5(%%1,%%2);
4423 
4424 100.复制一个目录下所有文件到一个文件夹中
4425 /*
4426 import java.io.*;
4427 import java.util.*;
4428 */
4429 LinkedList<String> folderList = new LinkedList<String>();
4430 folderList.add(%%1);
4431 LinkedList<String> folderList2 = new LinkedList<String>();
4432 folderList2.add(%%2+ %%1.substring(%%1.lastIndexOf("\\")));
4433 while (folderList.size() > 0) {
4434 File folders = new File(folderList.peek());
4435 String[] file = folders.list();
4436 File temp = null;
4437 try {
4438 for (int i = 0; i < file.length; i++) {
4439 if (folderList.peek().endsWith(File.separator)) {
4440 temp = new File(folderList.peek() + File.separator
4441 + file[i]);
4442 } else {
4443 temp = new File(folderList.peek() + File.separator
4444 + file[i]);
4445 }
4446 if (temp.isFile()) {
4447 FileInputStream input = new FileInputStream(temp);
4448 FileOutputStream output = new FileOutputStream(
4449 new File(%%2,temp.getName()));
4450 byte[] b = new byte[10240];
4451 int len;
4452 while ((len = input.read(b)) != -1) {
4453 output.write(b, 0, len);
4454 }
4455 output.flush();
4456 output.close();
4457 input.close();
4458 }
4459 if (temp.isDirectory()) {// 如果是子文件夹
4460 for (File f : temp.listFiles()) {
4461 if (f.isDirectory()) {
4462 folderList.add(f.getPath());
4463 folderList2.add(folderList2.peek()
4464 + File.separator + f.getName());
4465 }
4466 }
4467 }
4468 }
4469 } catch (IOException e) {
4470 System.err.println("复制整个文件夹内容操作出错");
4471 }
4472 folderList.removeFirst();
4473 folderList2.removeFirst();
4474 }
4475 
4476 101.移动一个目录下所有文件到一个文件夹中
4477 /*
4478 import java.io.*;
4479 import java.util.*;
4480 */
4481 LinkedList<String> folderList = new LinkedList<String>();
4482 folderList.add(%%1);
4483 LinkedList<String> folderList2 = new LinkedList<String>();
4484 folderList2.add(%%2 + %%1.substring(%%1.lastIndexOf("\\")));
4485 while (folderList.size() > 0) {
4486 File folders = new File(folderList.peek());
4487 String[] file = folders.list();
4488 File temp = null;
4489 try {
4490 for (int i = 0; i < file.length; i++) {
4491 if (folderList.peek().endsWith(File.separator)) {
4492 temp = new File(folderList.peek() + File.separator
4493 + file[i]);
4494 } else {
4495 temp = new File(folderList.peek() + File.separator
4496 + file[i]);
4497 }
4498 if (temp.isFile()) {
4499 FileInputStream input = new FileInputStream(temp);
4500 FileOutputStream output = new FileOutputStream(
4501 new File(%%2,temp.getName()));
4502 byte[] b = new byte[10240];
4503 int len;
4504 while ((len = input.read(b)) != -1) {
4505 output.write(b, 0, len);
4506 }
4507 output.flush();
4508 output.close();
4509 input.close();
4510 if (!temp.delete())
4511 //删除单个文件操作出错
4512 }
4513 if (temp.isDirectory()) {// 如果是子文件夹
4514 for (File f : temp.listFiles()) {
4515 if (f.isDirectory()) {
4516 folderList.add(f.getPath());
4517 folderList2.add(folderList2.peek()
4518 + File.separator + f.getName());
4519 }
4520 }
4521 }
4522 }
4523 } catch (Exception e) {
4524 //复制整个文件夹内容操作出错
4525 e.printStackTrace();
4526 }
4527 folderList.removeFirst();
4528 folderList2.removeFirst();
4529 }
4530 File f = new File(%%1);
4531 if (!f.delete()) {
4532 for (File file : f.listFiles()) {
4533 if (file.list().length == 0) {
4534 file.delete();
4535 }
4536 }
4537 }
4538 
4539 102.文件RSA高级加密
4540 /*
4541 import javax.crypto.*;
4542 import java.security.*;
4543 import java.security.spec.*;
4544 import java.security.interfaces.*;
4545 import java.io.*;
4546 import java.math.BigInteger;
4547 */
4548 /**
4549 
4550 * 生成密钥对
4551 
4552 * @return KeyPair
4553 
4554 * @throws EncryptException
4555 
4556 */
4557 
4558 public static KeyPair generateKeyPair() throws EncryptException {
4559 
4560 try {
4561 
4562 KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",
4563 
4564 new org.bouncycastle.jce.provider.BouncyCastleProvider());
4565 
4566 final int KEY_SIZE = 1024;//没什么好说的了,这个值关系到块加密的大小,可以更改,但是不要太大,否则效率会低
4567 
4568 keyPairGen.initialize(KEY_SIZE, new SecureRandom());
4569 
4570 KeyPair keyPair = keyPairGen.genKeyPair();
4571 
4572 return keyPair;
4573 
4574 } catch (Exception e) {
4575 
4576 throw new EncryptException(e.getMessage());
4577 
4578 }
4579 
4580 }
4581 
4582 /**
4583 
4584 * 生成公钥
4585 
4586 * @param modulus
4587 
4588 * @param publicExponent
4589 
4590 * @return RSAPublicKey
4591 
4592 * @throws EncryptException
4593 
4594 */
4595 
4596 public static RSAPublicKey generateRSAPublicKey(byte[] modulus, byte[] publicExponent) throws EncryptException {
4597 
4598 KeyFactory keyFac = null;
4599 
4600 try {
4601 
4602 keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
4603 
4604 } catch (NoSuchAlgorithmException ex) {
4605 
4606 throw new EncryptException(ex.getMessage());
4607 
4608 }
4609 
4610 RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(modulus), new BigInteger(publicExponent));
4611 
4612 try {
4613 
4614 return (RSAPublicKey) keyFac.generatePublic(pubKeySpec);
4615 
4616 } catch (InvalidKeySpecException ex) {
4617 
4618 throw new EncryptException(ex.getMessage());
4619 
4620 }
4621 
4622 }
4623 /**
4624 
4625 * 生成私钥
4626 
4627 * @param modulus
4628 
4629 * @param privateExponent
4630 
4631 * @return RSAPrivateKey
4632 
4633 * @throws EncryptException
4634 
4635 */
4636 
4637 public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus, byte[] privateExponent) throws EncryptException {
4638 
4639 KeyFactory keyFac = null;
4640 
4641 try {
4642 
4643 keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
4644 
4645 } catch (NoSuchAlgorithmException ex) {
4646 
4647 throw new EncryptException(ex.getMessage());
4648 
4649 }
4650 
4651 RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(modulus), new BigInteger(privateExponent));
4652 
4653 try {
4654 
4655 return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);
4656 
4657 } catch (InvalidKeySpecException ex) {
4658 
4659 throw new EncryptException(ex.getMessage());
4660 
4661 }
4662 
4663 }
4664 
4665 /**
4666 
4667 * 加密
4668 
4669 * @param key 加密的密钥
4670 
4671 * @param data 待加密的明文数据
4672 
4673 * @return 加密后的数据
4674 
4675 * @throws EncryptException
4676 
4677 */
4678 
4679 public static byte[] encrypt(Key key, byte[] data) throws EncryptException {
4680 
4681 try {
4682 
4683 Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
4684 
4685 cipher.init(Cipher.ENCRYPT_MODE, key);
4686 
4687 int blockSize = cipher.getBlockSize();//获得加密块大小,如:加密前数据为128个byte,而key_size=1024 加密块大小为127 byte,加密后为128个byte;因此共有2个加密块,第一个127 byte第二个为1个byte
4688 
4689 int outputSize = cipher.getOutputSize(data.length);//获得加密块加密后块大小
4690 
4691 int leavedSize = data.length % blockSize;
4692 
4693 int blocksSize = leavedSize != 0 ? data.length / blockSize + 1 : data.length / blockSize;
4694 
4695 byte[] raw = new byte[outputSize * blocksSize];
4696 
4697 int i = 0;
4698 
4699 while (data.length - i * blockSize > 0) {
4700 
4701 if (data.length - i * blockSize > blockSize)
4702 
4703 cipher.doFinal(data, i * blockSize, blockSize, raw, i * outputSize);
4704 
4705 else
4706 
4707 cipher.doFinal(data, i * blockSize, data.length - i * blockSize, raw, i * outputSize);
4708 //这里面doUpdate方法不可用,查看源代码后发现每次doUpdate后并没有什么实际动作除了把byte[]放到ByteArrayOutputStream中,而最后doFinal的时候才将所有的byte[]进行加密,可是到了此时加密块大小很可能已经超出了OutputSize所以只好用dofinal方法。
4709 
4710 i++;
4711 
4712 }
4713 
4714 return raw;
4715 
4716 } catch (Exception e) {
4717 
4718 throw new EncryptException(e.getMessage());
4719 
4720 }
4721 
4722 }
4723 
4724 /**
4725 
4726 * 解密
4727 
4728 * @param key 解密的密钥
4729 
4730 * @param raw 已经加密的数据
4731 
4732 * @return 解密后的明文
4733 
4734 * @throws EncryptException
4735 
4736 */
4737 
4738 public static byte[] decrypt(Key key, byte[] raw) throws EncryptException {
4739 
4740 try {
4741 
4742 Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
4743 
4744 cipher.init(cipher.DECRYPT_MODE, key);
4745 
4746 int blockSize = cipher.getBlockSize();
4747 
4748 ByteArrayOutputStream bout = new ByteArrayOutputStream(64);
4749 
4750 int j = 0;
4751 
4752 while (raw.length - j * blockSize > 0) {
4753 
4754 bout.write(cipher.doFinal(raw, j * blockSize, blockSize));
4755 
4756 j++;
4757 
4758 }
4759 
4760 return bout.toByteArray();
4761 
4762 } catch (Exception e) {
4763 
4764 throw new EncryptException(e.getMessage());
4765 
4766 }
4767 
4768 }
4769 
4770 
4771 File file = new File("test.html");
4772 
4773 FileInputStream in = new FileInputStream(file);
4774 
4775 ByteArrayOutputStream bout = new ByteArrayOutputStream();
4776 
4777 byte[] tmpbuf = new byte[1024];
4778 
4779 int count = 0;
4780 
4781 while ((count = in.read(tmpbuf)) != -1) {
4782 
4783 bout.write(tmpbuf, 0, count);
4784 
4785 tmpbuf = new byte[1024];
4786 
4787 }
4788 
4789 in.close();
4790 
4791 byte[] orgData = bout.toByteArray();
4792 
4793 KeyPair keyPair = RSAUtil.generateKeyPair();
4794 
4795 RSAPublicKey pubKey = (RSAPublicKey) keyPair.getPublic();
4796 
4797 RSAPrivateKey priKey = (RSAPrivateKey) keyPair.getPrivate();
4798 
4799 byte[] pubModBytes = pubKey.getModulus().toByteArray();
4800 
4801 byte[] pubPubExpBytes = pubKey.getPublicExponent().toByteArray();
4802 
4803 byte[] priModBytes = priKey.getModulus().toByteArray();
4804 
4805 byte[] priPriExpBytes = priKey.getPrivateExponent().toByteArray();
4806 
4807 RSAPublicKey recoveryPubKey = RSAUtil.generateRSAPublicKey(pubModBytes,pubPubExpBytes);
4808 
4809 RSAPrivateKey recoveryPriKey = RSAUtil.generateRSAPrivateKey(priModBytes,priPriExpBytes);
4810 
4811 byte[] raw = RSAUtil.encrypt(priKey, orgData);
4812 
4813 file = new File("encrypt_result.dat");
4814 
4815 OutputStream out = new FileOutputStream(file);
4816 
4817 out.write(raw);
4818 
4819 out.close();
4820 
4821 byte[] data = RSAUtil.decrypt(recoveryPubKey, raw);
4822 
4823 file = new File("decrypt_result.html");
4824 
4825 out = new FileOutputStream(file);
4826 
4827 out.write(data);
4828 
4829 out.flush();
4830 
4831 out.close();
4832 
4833 103.计算文件大小
4834 /*
4835 import java.io.*;
4836 private final long KB=1024;
4837 private final long MB=1024*KB;
4838 private final long GB=1024*MB;
4839 */
4840 //文件属性
4841 File file=new File(%%1);
4842 //如果文件存在而且是文件,直接返回文件大小
4843 if(file.exists()&&file.isFile())
4844 {
4845 long filesize= file.length();
4846 String showsize;
4847 if(filesize>=GB)
4848 showsize=filesize/GB+" GB";
4849 else if(filesize>=MB)
4850 showsize=filesize/MB+" MB";
4851 else if(filesize>=KB)
4852 showsize=filesize/KB+" KB";
4853 else if(filesize>1)
4854 showsize=filesize/GB+" Bytes";
4855 else
4856 showsize="1 Byte";
4857 String %%2=showsize;
4858 }
4859 
4860 104.计算文件夹的大小
4861 /*
4862 import java.io.*;
4863 import java.math.*;
4864 //bt字节参考量
4865 private static final long SIZE_BT=1024L;
4866 //KB字节参考量
4867 private static final long SIZE_KB=SIZE_BT*1024L;
4868 //MB字节参考量
4869 private static final long SIZE_MB=SIZE_KB*1024L;
4870 //GB字节参考量
4871 private static final long SIZE_GB=SIZE_MB*1024L;
4872 //TB字节参考量
4873 private static final long SIZE_TB=SIZE_GB*1024L;
4874 private static final int SACLE=2;
4875 //文件大小属性
4876 private static long longSize;
4877 */
4878 private void getFileSize(File file) {
4879 // 获得文件目录下文件对象数组
4880 File[] fileArray = file.listFiles();
4881 // 如果文件目录数组不为空或者length!=0,即目录为空目录
4882 if (fileArray != null && fileArray.length != 0) {
4883 // 遍历文件对象数组
4884 for (int i = 0; i < fileArray.length; i++) {
4885 File fileSI = fileArray[i];
4886 // 如果是目录递归遍历
4887 if (fileSI.isDirectory()) {
4888 // 递归遍历
4889 getFileSize(fileSI);
4890 }
4891 // 如果是文件
4892 if (fileSI.isFile()) {
4893 longSize += fileSI.length();
4894 }
4895 }
4896 } else {
4897 // 如果文件目录数组为空或者length==0,即目录为空目录
4898 longSize = 0;
4899 }
4900 }
4901 // 文件存在而且是目录,递归遍历文件目录计算文件大小
4902 File file = new File(folderPath);
4903 if (file.exists() && file.isDirectory()) {
4904 getFileSize(file);// 递归遍历
4905 }
4906 String %%2="0 Byte";
4907 if (longSize == 1) {
4908 %%2="1 Byte";
4909 } else if (longSize >= 2 && longSize < SIZE_BT) {
4910 %%2=longSize + " Bytes";
4911 } else if (longSize >= SIZE_BT && longSize < SIZE_KB) {
4912 %%2=longSize / SIZE_BT + " KB";
4913 } else if (longSize >= SIZE_KB && longSize < SIZE_MB) {
4914 %%2=longSize / SIZE_KB + " MB";
4915 } else if (longSize >= SIZE_MB && longSize < SIZE_GB) {
4916 BigDecimal longs = new BigDecimal(Double.valueOf(longSize + "")
4917 .toString());
4918 BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_MB + "")
4919 .toString());
4920 String result = longs.divide(sizeMB, SACLE,
4921 BigDecimal.ROUND_HALF_UP).toString();
4922 // double result=longSize/(double)SIZE_MB;
4923 %%2=result + " GB";
4924 } else {
4925 BigDecimal longs = new BigDecimal(Double.valueOf(longSize + "")
4926 .toString());
4927 BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_GB + "")
4928 .toString());
4929 String result = longs.divide(sizeMB, SACLE,
4930 BigDecimal.ROUND_HALF_UP).toString();
4931 %%2=result + " TB";
4932 }
4933 
4934 105.快速获得当前程序的驱动器、路径、文件名和扩展名
4935 String %%2=%%1.substring(0,%%1.lastIndexOf(":"));
4936 String %%5=%%1.substring(0,%%1.lastIndexOf("\\"));
4937 String %%4=%%1.substring(%%1.lastIndexOf("\\")+1);
4938 String %%3=%%1.substring(%%1.lastIndexOf('.'));
4939 
4940 106.磁盘剩余空间计算
4941 //import java.io.*;
4942 File file = new File(%%1); //"C:"
4943 long %%2 = file.getFreeSpace(); //file.getTotalSpace()
4944 
4945 107.获取当前程序进程ID
4946 java是在jvm上跑的,jvm本身作为系统的一个进程在跑,
4947 所以平时见到的都是java多线程,没有进程间通信,
4948 为什么呢,就是因为java中没有进程这一说法,
4949 除非指的是程序本身这个进程。这个进程的话需要用到系统命令或者底层c语言才能够得到。呃,本人jni不是太熟悉,可以参考
4950 http://hi.baidu.com/lff0305/blog/item/4f301a7b20d3d3f20bd187e3.html,
4951 linux下直接调用ps-ef再用管道提取吧。
4952 
4953 108.全盘搜索文件
4954 import java.io.*;
4955 //ArrayList fileNames=new ArrayList();
4956 void listDirectory(String dir)
4957 {
4958 File f=new File(dir);
4959 File[] files=f.listFiles();
4960 if(files==null)
4961 return;
4962 for(int i=0;i<files.length;i++)
4963 {
4964 if(files[i].isDirectory())
4965 {
4966 System.out.println("-----------"+files[i]+" is a directory has more files bellow:");
4967 listDirectory(files[i].getAbsolutePath());
4968 //listDirectory(files[i].getName());
4969 //listDirectory(files[i].toString());
4970 }
4971 
4972 else
4973 {
4974 System.out.println(files[i]);
4975 }
4976 }
4977 }
4978 File[] roots=File.listRoots();
4979 for(int i=0;i<roots.length;i++)
4980 {
4981 System.out.println(roots[i]);
4982 }
4983 }
4984 lrt.listDirectory("D:"+File.separator);

 

posted @ 2016-07-25 11:52  魔流剑  阅读(1671)  评论(0编辑  收藏  举报