| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
ne3g
9年前发布

Java文件操作大全

1.创建文件夹  //import java.io.*;  File myFolderPath = new File(%%1);  try {  if (!myFolderPath.exists())  myFolderPath.mkdir();  }  catch (IOException e) {  System.err.println("新建目录操作出错");  }    2.创建文件  //import java.io.*;  File myFilePath = new File(%%1);  try {  if (!myFilePath.exists())  myFilePath.createNewFile();  FileWriter resultFile = new FileWriter(myFilePath);  PrintWriter myFile = new PrintWriter(resultFile);  myFile.println(%%2);  myFile.flush();  resultFile.close();  }  catch (IOException e) {  System.err.println("新建文件操作出错");  }    3.删除文件  //import java.io.*;  File myDelFile = new File(%%1);  try {  if(myDelFile.delete())  {  %%2  }  }  catch (IOException e) {  System.err.println("删除文件操作出错");  }    4.删除文件夹  /*  import java.io.*;  import java.util.*;  */  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(%%1);  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  ArrayList<File> fileList = new ArrayList<File>();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory()) {  folderList.add(files[i].getPath());  } else {  fileList.add(files[i]);  }  }  for (File f : fileList) {  f.delete();  }  }  folderList = new LinkedList<String>();  folderList.add(%%1);  while (folderList.size() > 0) {  File file = new File((String)folderList.getLast());  if (file.delete())  folderList.removeLast();  else {  File[] files = file.listFiles();  for (int i = 0; i < files.length; i++) {  folderList.add(files[i].getPath());  }  }  }    5.删除一个文件下夹所有的文件夹  /*  import java.io.*;  private static LinkedList<String> folderList=null;  */  File delfile=new File(%%1);  File[] files=delfile.listFiles();  for(int i=0;i<files.length;i++){  if(files[i].isDirectory()){  if(!files[i].delete()){  folderList = new LinkedList<String>();  folderList.add(files[i]);  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  ArrayList<File> fileList = new ArrayList<File>();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory())  folderList.add(files[i].getPath());  else  fileList.add(files[i]);  }  for (File f : fileList)  f.delete();  }  folderList = new LinkedList<String>();  folderList.add(files[i]);  while (folderList.size() > 0) {  File file = new File((String)folderList.getLast());  if (file.delete())  folderList.removeLast();  else {  File[] files = file.listFiles();  for (int i = 0; i < files.length; i++) {  folderList.add(files[i].getPath());  }  }  }  }  }  }    6.清空文件夹  //import java.io.*;  File delfilefolder=new File(%%1);  if (!delfilefolder.exists() && !delfilefolder.delete()){  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(delfilefolder.getAbsolutePath());  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  ArrayList<File> fileList = new ArrayList<File>();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory())  folderList.add(files[i].getPath());  else  fileList.add(files[i]);  }  for (File f : fileList)  f.delete();  }  folderList = new LinkedList<String>();  folderList.add(delfilefolder.getAbsolutePath());  while (folderList.size() > 0) {  File file = new File((String)folderList.getLast());  if (file.delete())  folderList.removeLast();  else {  File[] files = file.listFiles();  for (int i = 0; i < files.length; i++) {  folderList.add(files[i].getPath());  }  }  }  }  delfilefolder.mkdir();    7.读取文件  //import java.io.*;  7.1.操作系统默认编码  FileReader fr=new FileReader(%%1);  BufferedReader br = new BufferedReader();  String %%2=nul;  try {  while ((%%2 = reader.readLine()) != null) {  %%3  }  } catch (IOException e) {  e.printStackTrace();  } finally{  try {  br.close();  fr.close();  } catch (IOException e) {  e.printStackTrace();  }  }    7.2.UTF-8编码  FileInputStream fis=new FileInputStream(new File(%%1));  InputStreamReader read = new InputStreamReader(fis,"UTF-8");  BufferedReader reader=new BufferedReader(read);  String %%2=null;  try {  while ((%%2 = reader.readLine()) != null) {  %%3  }  } catch (IOException e) {  e.printStackTrace();  } finally{  try {  br.close();  read.close();  fis.close();  } catch (IOException e) {  e.printStackTrace();  }  }    7.3.分块读取  FileInputStream fis=new FileInputStream(new File(%%1));  byte[] buffer=new byte[10240];  try {  int byteread;  while ((byteread=fis.read(buffer)) != -1) {  String %%2=new String(buffer);  %%3  }  } catch (IOException e) {  e.printStackTrace();  } finally{  try {  read.close();  fis.close();  } catch (IOException e) {  e.printStackTrace();  }  }    8.写入文件  //import java.io.*;  8.1.操作系统默认编码  try {  FileWriter fw = new FileWriter(%%1);  fw.write(%%2);  fw.flush();  fw.close();  } catch (IOException e) {  e.printStackTrace();  }    8.2.UTF-8编码  try {  OutputStreamWriter out = new OutputStreamWriter(  new FileOutputStream(%%1),"UTF-8");  out.write(sb.toString());  out.flush();  out.close();  } catch (UnsupportedEncodingException e) {  e.printStackTrace();  } catch (FileNotFoundException e){  e.printStackTrace();  } catch (IOException e){  e.printStackTrace();  }    9.写入随机文件  //import java.io.*;  try {  RandomAcessFile logFile=new RandomAcessFile(%%1,"rw");  long lg=logFile.length();  logFile.seek(%%2);  logFile.writeByte(%%3);  }catch(IOException ioe){  System.out.println("无法写入文件:"+ioe.getMessage());  }    10.读取文件属性  //import java.io.*;  // 文件属性的取得  File af = new File(%%1);  if (af.exists()) {  System.out.println(f.getName() + "的属性如下: 文件长度为:" + f.length());  System.out.println(f.isFile() ? "是文件" : "不是文件");  System.out.println(f.isDirectory() ? "是目录" : "不是目录");  System.out.println(f.canRead() ? "可读取" : "不");  System.out.println(f.canWrite() ? "是隐藏文件" : "");  System.out.println("文件夹的最后修改日期为:" + new Date(f.lastModified()));  } else {  System.out.println(f.getName() + "的属性如下:");  System.out.println(f.isFile() ? "是文件" : "不是文件");  System.out.println(f.isDirectory() ? "是目录" : "不是目录");  System.out.println(f.canRead() ? "可读取" : "不");  System.out.println(f.canWrite() ? "是隐藏文件" : "");  System.out.println("文件的最后修改日期为:" + new Date(f.lastModified()));  }  if(f.canRead()){  %%2  }  if(f.canWrite()){  %%3  }    11.写入属性  //import java.io.*;  File filereadonly=new File(%%1);  try {  boolean %%2=filereadonly.setReadOnly();  }  catch (IOException e) {  System.err.println("拒绝写访问:"+e.printStackTrace());  }    12.枚举一个文件夹中的所有文件  /*  import java.io.*;  import java.util.*;  */  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(%%1);  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  List<File> fileList = new ArrayList<File>();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory())  folderList.add(files[i].getPath());  else  fileList.add(files[i]);  }  for (File f : fileList) {  %%2=f.getAbsoluteFile();  %%3  }  }    13.复制文件夹  /*  import java.io.*;  import java.util.*;  */  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(%%1);  LinkedList<String> folderList2 = new LinkedList<String>();  folderList2.add(%%2+ %%1.substring(%%1.lastIndexOf("\\")));  while (folderList.size() > 0) {  (new File(folderList2.peek())).mkdirs(); // 如果文件夹不存在 则建立新文件夹  File folders = new File(folderList.peek());  String[] file = folders.list();  File temp = null;  try {  for (int i = 0; i < file.length; i++) {  if (folderList.peek().endsWith(File.separator))  temp = new File(folderList.peek() + File.separator  + file[i]);  else  temp = new File(folderList.peek() + File.separator  + file[i]);  if (temp.isFile()) {  FileInputStream input = new FileInputStream(temp);  FileOutputStream output = new FileOutputStream(new File(  folderList2.peek() ,temp.getName().toString()));  byte[] b = new byte[10240];  int len;  while ((len = input.read(b)) != -1)  output.write(b, 0, len);  output.flush();  output.close();  input.close();  }  else if (temp.isDirectory()) {// 如果是子文件夹  for (File f : temp.listFiles()) {  if (f.isDirectory()) {  folderList.add(f.getPath());  folderList2.add(folderList2.peek()  + File.separator + f.getName());  }  else if(f.isFile()) {  FileInputStream input = new FileInputStream(f);  FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());  byte[] b = new byte[10240];  int len;  while ((len = input.read(b)) != -1)  output.write(b, 0, len);  output.flush();  output.close();  input.close();  }  }  }  }  } catch (IOException e) {  System.err.println("复制整个文件夹内容操作出错");  }  folderList.removeFirst();  folderList2.removeFirst();  }    14.复制一个目录下所有的文件夹到另一个文件夹下  /*  import java.io.*;  import java.util.*;  */  File copyfolders=new File(%%1);  File[] copyfoldersList=copyfolders.listFiles();  for(int k=0;k<copyfoldersList.length;k++){  if(copyfoldersList[k].isDirectory()){  List<String>folderList=new ArrayList<String>();  folderList.add(copyfoldersList[k].getPath());  List<String>folderList2=new ArrayList<String>();  folderList2.add(%%2+"/"+copyfoldersList[k].getName());  for(int j=0;j<folderList.size();j++){  (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹  File folders=new File(folderList.get(j));  String[] file=folders.list();  File temp=null;  try {  for (int i = 0; i < file.length; i++) {  if(folderList.get(j).endsWith(File.separator))  temp=new File(folderList.get(j),file[i]);  else  temp=new File(folderList.get(j),file[i]);  FileInputStream input = new FileInputStream(temp);  if(temp.isFile()){  FileOutputStream output = new FileOutputStream(new File(folderList2.get(j) ,temp.getName()).toString()));  byte[] b = new byte[10240];  while ( (int len = input.read(b)) != -1)  output.write(b, 0, len);  output.flush();  output.close();  input.close();  }  else if(temp.isDirectory()){//如果是子文件夹  for (File f : temp.listFiles()) {  if (f.isDirectory()) {  folderList.add(f.getPath());  folderList2.add(folderList2.peek()  + File.separator + f.getName());  }  else if(f.isFile()) {  FileInputStream input = new FileInputStream(f);  FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());  byte[] b = new byte[10240];  int len;  while ((len = input.read(b)) != -1) {  output.write(b, 0, len);  }  output.flush();  output.close();  input.close();  }  }  }  }  }  }  catch (IOException e) {  System.err.println("复制整个文件夹内容操作出错");  }  }  }  }    15.移动文件夹  /*  import java.io.*;  import java.util.*;  */  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(%%1);  LinkedList<String> folderList2 = new LinkedList<String>();  folderList2.add(%%2 + %%1.substring(%%1.lastIndexOf("\\")));  while (folderList.size() > 0) {  (new File(folderList2.peek())).mkdirs(); // 如果文件夹不存在 则建立新文件夹  File folders = new File(folderList.peek());  String[] file = folders.list();  File temp = null;  try {  for (int i = 0; i < file.length; i++) {  if (folderList.peek().endsWith(File.separator)) {  temp = new File(folderList.peek() , file[i]);  } else {  temp = new File(folderList.peek() ,file[i]);  }  if (temp.isFile()) {  FileInputStream input = new FileInputStream(temp);  FileOutputStream output = new FileOutputStream(  folderList2.peek() + File.separator  + (temp.getName()).toString());  byte[] b = new byte[10240];  while ((int len = input.read(b)) != -1)  output.write(b, 0, len);  output.flush();  output.close();  input.close();  if (!temp.delete())  //删除单个文件操作出错  }  else if (temp.isDirectory()) {// 如果是子文件夹  for (File f : temp.listFiles()) {  if (f.isDirectory()) {  folderList.add(f.getPath());  folderList2.add(folderList2.peek()  + File.separator + f.getName());  }  else if (f.isFile()) {  FileInputStream input = new FileInputStream(f);  FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());  byte[] b = new byte[10240];  while ((int len = input.read(b)) != -1)  output.write(b, 0, len);  output.flush();  output.close();  input.close();  if (!temp.delete())  //删除单个文件操作出错  }  }  }  }  } catch (IOException e) {  //复制整个文件夹内容操作出错  e.printStackTrace();  }  folderList.removeFirst();  folderList2.removeFirst();    }  File f = new File(%%1);  if (!f.delete()) {  for (File file : f.listFiles()) {  if (file.list().length == 0)  file.delete();  }  }    16.移动一个目录下所有的文件夹到另一个目录下  /*  import java.io.*;  import java.util.*;  */  File movefolders=new File(%%1);  File[] movefoldersList=movefolders.listFiles();  for(int k=0;k<movefoldersList.length;k++){  if(movefoldersList[k].isDirectory()){  List<String>folderList=new ArrayList<String>();  folderList.add(movefoldersList[k].getPath());  List<String>folderList2=new ArrayList<String>();  folderList2.add(%%2+File.separator+movefoldersList[k].getName());  for(int j=0;j<folderList.size();j++){  (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹  File folders=new File(folderList.get(j));  String[] file=folders.list();  File temp=null;  try {  for (int i = 0; i < file.length; i++) {  if(folderList.get(j).endsWith(File.separator))  temp=new File(folderList.get(j),file[i]);  else  temp=new File(folderList.get(j),file[i]);  FileInputStream input = new FileInputStream(temp);  if(temp.isFile()){  FileInputStream input = new FileInputStream(temp);  FileOutputStream output = new FileOutputStream(new File(folderList2.get(j),temp.getName().toString()));  byte[] b = new byte[10240];  while ( (int len = input.read(b)) != -1)  output.write(b, 0, len);  output.flush();  output.close();  input.close();  temp.delete();  }  else if(temp.isDirectory()){//如果是子文件夹  for (File f : temp.listFiles()) {  if (f.isDirectory()) {  folderList.add(f.getPath());  folderList2.add(folderList2.peek()  + File.separator + f.getName());  }  else if (f.isFile()) {  FileInputStream input = new FileInputStream(f);  FileOutputStream output = new FileOutputStream(folderList2.peek()+File.separator+temp.getName()+File.separator+ f.getName());  byte[] b = new byte[10240];  while ((int len = input.read(b)) != -1)  output.write(b, 0, len);  output.flush();  output.close();  input.close();  if (!temp.delete())  //删除单个文件操作出错  }  }  }  }  catch (IOException e) {  //复制整个文件夹内容操作出错  e.printStackTrace();  }  }  movefoldersList[k].delete();  }  }    17.以一个文件夹的框架在另一个目录创建文件夹和空文件  /*  import java.io.*;  import java.util.*;  */  boolean b=false;//不创建空文件  List<String>folderList=new ArrayList<String>();  folderList.add(%%1);  List<String>folderList2=new ArrayList<String>();  folderList2.add(%%2);  for(int j=0;j<folderList.size();j++){  (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹  File folders=new File(folderList.get(j));  String[] file=folders.list();  File temp=null;  try {  for (int i = 0; i < file.length; i++) {  if(folderList.get(j).endsWith(File.separator))  temp=new File(folderList.get(j),file[i]);  else  temp=new File(folderList.get(j),file[i]);  if(temp.isFile() && b)  temp.createNewFile();  else if(temp.isDirectory()){//如果是子文件夹  folderList.add(folderList.get(j)+File.separator+file[i]);  folderList2.add(folderList2.get(j)+File.separator+file[i]);  }  }  }  catch (IOException e) {  //复制整个文件夹内容操作出错  e.printStackTrace();  }  }    18.复制文件  //import java.io.*;  File oldfile = new File(%%1);  try {  if (oldfile.exists()) { //文件存在时  FileInputStream inStream = new FileInputStream(oldfile); //读入原文件  FileOutputStream fs = new FileOutputStream(new File(%%2,oldfile.getName()));  byte[] buffer = new byte[10240];  int byteread;  while ( (byteread = inStream.read(buffer)) != -1)  fs.write(buffer, 0, byteread);  inStream.close();  }  }  catch (IOException e) {  //复制单个文件操作出错  e.printStackTrace();  }    19.复制一个目录下所有的文件到另一个目录  //import java.io.*;  File copyfiles=new File(%%1);  File targetfiles = new File(%%2);  if (!targetfiles.exists())  targetfiles.mkdirs();  File[] files=copyfiles.listFiles();  for(int i=0;i<files.length;i++){  if(files[i].isFile()){  try {  InputStream inStream = new FileInputStream(files[i]); //读入原文件  FileOutputStream fs = new FileOutputStream(new File(%%2,files[i].getName()));  byte[] buffer = new byte[10240];  int byteread;  while ( (byteread = inStream.read(buffer)) != -1)  fs.write(buffer, 0, byteread);  inStream.close();  } catch (IOException e) {  //复制单个文件操作出错  e.printStackTrace();  }  }  }    20.提取扩展名  String %%2=%%1.substring(%%1.lastIndexOf('.'));    21.提取文件名  String %%2=%%1.substring(%%1.lastIndexOf("\\")+1);    22.提取文件路径  String %%2=%%1.substring(0,%%1.lastIndexOf("\\"));    23.替换扩展名  //import java.io.*;  File replaceExt=new File(%%1);  replaceExt.renameTo(replaceExt.getName().split(".")[0]+"."+%%2);    24.追加路径  final String path=%%1.endsWith("\\")?%%1:%%1+"\\";  %%3=path+%%2;    25.移动文件  //import java.io.*;  File oldfile = new File(%%1);  try {  if (oldfile.exists()) { //文件存在时  InputStream inStream = new FileInputStream(oldfile); //读入原文件  FileOutputStream fs = new FileOutputStream(new File(%%2,oldfile.getName()));  byte[] buffer = new byte[10240];  int byteread;  while ( (byteread = inStream.read(buffer)) != -1)  fs.write(buffer, 0, byteread);  inStream.close();  oldfile.delete();  }  }  catch (IOException e) {  //复制单个文件操作出错  e.printStackTrace();  }    26.移动一个目录下所有文件到另一个目录  //import java.io.*;  File movefile=new File(%%1);  File[] movefiles=movefile.listFiles();  for(int i=0;i<movefiles.length;i++){  if(movefiles[i].isFile()){  File oldfile = new File(movefiles[i]);  try {  if (oldfile.exists()) { //文件存在时  InputStream inStream = new FileInputStream(oldfile); //读入原文件  FileOutputStream fs = new FileOutputStream(new File(%%2,oldfile.getName()));  byte[] buffer = new byte[10240];  int byteread;  while ( (byteread = inStream.read(buffer)) != -1)  fs.write(buffer, 0, byteread);  inStream.close();  oldfile.delete();  }  }  catch (IOException e) {  //复制单个文件操作出错  e.printStackTrace();  }  }  }    27.指定目录下搜索文件  //import java.io.*;  private static final String filter=%%1; //"*.*"  private static void doSearch(String path){  File file = new File(path);  if(file.exists()) {  if(file.isDirectory()) {  File[] fileArray = file.listFiles();  for(File f:fileArray) {  if(f.isDirectory()) {  doSearch(f.getPath());  } else {  if(f.getName().indexOf(filter) >= 0) {  //f.getPath()  }  }  //f.getPath()  }  //"The numbers of files had been found:" + countFiles  } else {  //"Couldn't open the path!"  }  } else {  System.err.println("目录不存在");  }  }  doSearch(%%1);    28.打开对话框  /*  import java.io.*;  import javax.swing.*;  */  JFileChooser Jfc = new JFileChooser(); //建立选择档案对话方块盒 Jfc  Jfc.showDialog(null, %%1);  if (Jfc.getSelectedFile() != null) {  File %%2 = Jfc.getSelectedFile();  }    29.文件分割  //import java.io.*;  try {  File f=new File(%%1);  FileInputStream fileInputStream = new FileInputStream(f);  byte[] buffer = new byte[fileInputStream.available()];  FileInputStream.read(buffer);  fileInputStream.close();  String strFileName = f.getName();  FileOutputStream fileOutputStream = new FileOutputStream(new File(%%2+"\\"+ strFileName + "1"));  fileOutputStream.write(buffer,0,buffer.length/2);  fileOutputStream.close();  fileOutputStream = new FileOutputStream(new File(%%2+"\\"+ strFileName + "2"));  fileOutputStream.write(buffer, buffer.length/2, buffer.length-buffer.length/2);  fileOutputStream.close();  } catch (ArrayIndexOutOfBoundsException e) {  e.printStackTrace();  }  catch(IOException e){  e.printStackTrace();  }    30.文件合并  //import java.io.*;  String strFileName = %%1.substring(%%1.LastIndexOf("\\") + 1);  try {  FileInputStream fileInputStream1 = new FileInputStream(new File(%%2 + strFileName + "1"));  FileInputStream fileInputStream2 = new FileInputStream(new File(%%2 + strFileName + "2"));  byte[] buffer = new byte[fileInputStream1.available()+fileInputStream2.available()];  FileInputStream.read(buffer, 0, fileInputStream1.available());  FileInputStream2.read(buffer, fileInputStream1.available(), fileInputStream2.available());  fileInputStream.close();  fileInputStream2.close();  FileOutputStream fileOutputStream = new FileOutputStream(new File(%%2+"\\"+ strFileName));  fileOutputStream.write(buffer,0,buffer.length);  fileOutputStream.close();  }  catch(IOException e){  e.printStackTrace();  }    31.文件简单加密  /*  import java.io.*;  import javax.swing.*;  private static final String CharSet = "0123456789ABCDEF";  */  JFileChooser jfc = new JFileChooser();  JFileChooser jfc2 = new JFileChooser();  jfc.showDialog(null, "请选择要加密编码的文件");  jfc2.showDialog(null, "请选择要输出的文件名");  if (jfc.getSelectedFile() != null && jfc2.getSelectedFile() != null) {  File oldfile = jfc.getSelectedFile();  FileInputStream inStream = null;  FileWriter fw = null;  try {  if (oldfile.exists()) {  inStream = new FileInputStream(oldfile);  fw = new FileWriter(jfc2.getSelectedFile());  byte[] sRead = new byte[10240];  int byteread;  while ((byteread = inStream.read(sRead)) != -1) {  StringBuilder smi = new StringBuilder(byteread * 2);  int ka = 3, kb = 5, kc = 2, kd = 7, js = 0;  if (byteread % 2 != 0)  js = 1;  for (int i = 0; i < byteread - 1; i += 2) {  char c1 = (char) sRead[i];  char c2 = (char) sRead[i + 1];  int tmp = ka * c1 + kc * c2;  while (tmp < 0)  tmp += 1024;  byte s1 = (byte) (tmp % 1024);  int js1 = (int) s1 >> 4 & 0xf;  smi.append(CharSet.substring(js1, js1 + 1));  int ks1 = s1 & 0xf;  smi.append(CharSet.substring(ks1, ks1 + 1));  tmp = kb * c1 + kd * c2;  while (tmp < 0)  tmp += 1024;  byte s2 = (byte) (tmp % 1024);  int js2 = (int) s2 >> 4 & 0xf;  smi.append(CharSet.substring(js2, js2 + 1));  int ks2 = s2 & 0xf;  smi.append(CharSet.substring(ks2, ks2 + 1));  }  if (js == 1) {  byte s3 = (byte) ((sRead[byteread - 1] - 4) % 1024);  int js3 = (int) s3 >> 4 & 0xf;  smi.append(CharSet.substring(js3, js3 + 1));  int ks3 = (int) s3 & 0xf;  smi.append(CharSet.substring(ks3, ks3 + 1));  }  fw.write(smi.toString());  }  fw.flush();  }  } catch (IOException e) {  e.printStackTrace();  } finally {  try {  fw.close();  inStream.close();  } catch (IOException e) {  e.printStackTrace();  }  }  }    32.文件简单解密  /*  import java.io.*;  import javax.swing.*;  private static final String CharSet = "0123456789ABCDEF";  */  private static int niyuan(int m, int n) {  int a, b, c, d, t, yu = 0, shang, mod;  a = m;  b = n;  mod = a;  c = 0;  d = 1;  while (b < 0)  b += a;  if (a % b == 0 || b % 2 == 0)  return 0;  while (b != 1) {  t = a % b;  shang = a / b;  a = b;  b = t;  yu = c - shang * d;  c = d;  d = yu;  }  if (yu < 0)  yu += mod;  return yu;  }  JFileChooser jfc = new JFileChooser();  JFileChooser jfc2 = new JFileChooser();  jfc.showDialog(null, "请选择要解码解密的文件");  jfc2.showDialog(null, "请选择要输出的文件名");  if (jfc.getSelectedFile() != null && jfc2.getSelectedFile() != null) {  FileOutputStream fw = null;  try {  FileInputStream fis = new FileInputStream(jfc.getSelectedFile());  fw = new FileOutputStream(jfc2  .getSelectedFile());  byte[] buffer = new byte[20480];  int ka = 3, kb = 5, kc = 2, kd = 7, js = 0, tmp;  int aany, ddny;  int r00 = ka * kc * kd;  int r01 = -ka * kb * kc;  int r10 = -kb * kc * kc;  int r11 = ka * kb * kc;  int x00 = ka * ka * kc * kd - ka * kb * kc * kc;  int x11 = ka * kb * kc * kd - kb * kb * kc * kc;  while (x00 % 2 == 0) {  x00 /= 2;  r00 /= 2;  r01 /= 2;  }  while (x11 % 2 == 0) {  x11 /= 2;  r10 /= 2;  r11 /= 2;  }  aany = x00;  ddny = x11;  if (niyuan(1024, aany) != 0 && niyuan(1024, ddny) != 0) {  int kn00 = r00 * niyuan(1024, x00);  int kn01 = r01 * niyuan(1024, x00);  int kn10 = r10 * niyuan(1024, x11);  int kn11 = r11 * niyuan(1024, x11);  ka = kn00;  kb = kn01;  kc = kn10;  kd = kn11;  } else {  JOptionPane.showMessageDialog(null, "无逆矩阵!");  System.exit(0);  }  while (ka < 0)  ka += 1024;  while (kb < 0)  kb += 1024;  while (kc < 0)  kc += 1024;  while (kd < 0)  kd += 1024;  ka %= 1024;  kb %= 1024;  kc %= 1024;  kd %= 1024;  try {  int byteread;  while ((byteread = fis.read(buffer)) != -1) {  int nLen = byteread / 2;  byte[] sming = new byte[nLen];  String chs=new String(buffer,"US-ASCII");  for (int i = 0; i < nLen; i++) {  byte bTmp;  if (byteread < 2)  bTmp = -1;  bTmp = (byte) (CharSet.indexOf(chs.substring(i * 2,i * 2+1)) * 16 + CharSet  .indexOf(chs.substring(i * 2 + 1,i * 2 + 2)));  sming[i] = bTmp;  }  if (nLen % 2 != 0)  js = 1;  for (int i = 0; i < nLen - 1; i += 2) {  char c1 = (char) sming[i];  char c2 = (char) sming[i + 1];  tmp = ka * c1 + kc * c2;  while (tmp < 0)  tmp += 1024;  char s1 = (char) (tmp % 1024);  fw.write(s1);  tmp = kb * c1 + kd * c2;  while (tmp < 0)  tmp += 1024;  char s2 = (char) (tmp % 1024);  fw.write(s2);  }  if (js == 1) {  char c3 = (char) ((sming[nLen - 1] - 4) % 1024);  fw.write(c3);  }  }  fw.flush();  } catch (IOException e) {  e.printStackTrace();  } finally {  try {  fis.close();  fw.close();  } catch (IOException e) {  e.printStackTrace();  }  }  } catch (FileNotFoundException e1) {  // TODO Auto-generated catch block  e1.printStackTrace();  }  }    33.读取ini文件属性  /*  import java.io.*;  import java.util.*;  import java.util.regex.*;  private static HashMap configMap=null;  private static FileReader fileReader = null;  */  private static boolean readIni() {  if (configMap == null) {  configMap = new HashMap<String, ArrayList>();  String strLine = null;  String currentNode = null;  String previousNode = null;  ArrayList<Properties> vec = new ArrayList<Properties>();  int row = 0;  BufferedReader bufferedReader = new BufferedReader(fileReader);  try {  while ((strLine = bufferedReader.readLine()) != null) {  String oneLine = strLine.trim();  if (oneLine.length() >= 1) {  Pattern p = Pattern.compile("\\[\\s*.*\\s*\\]");  int nodelen = oneLine.split("[;]").length;  String[] strArray1 = new String[4];  if (nodelen == 1) {  oneLine = oneLine.split("[;]")[0].trim();  } else if (nodelen == 2) {  strArray1[3] = oneLine.split("[;]")[1].trim();  oneLine = oneLine.split("[;]")[0].trim();  }  Matcher m = p.matcher(oneLine);  if (m.matches()) {  strArray1[0] = "@Node";  strArray1[1] = oneLine;  strArray1[2] = "";  } else {  int keylen = oneLine.split("=").length;  if (keylen == 1) {  strArray1[0] = "@Key";  strArray1[1] = oneLine.split("=")[0];  strArray1[2] = "";  } else if (keylen == 2) {  strArray1[0] = "@Key";  strArray1[1] = oneLine.split("=")[0];  strArray1[2] = oneLine.split("=")[1];  } else {  strArray1[0] = "@ElementError";  strArray1[1] = "";  strArray1[2] = "";  strArray1[3] = "";  }  }  if (strArray1[0].equals("@Node")) {  previousNode = currentNode;  currentNode = strArray1[1];  if (row > 0) {  configMap.put(previousNode, (ArrayList)vec.clone());  vec.clear();  row = 0;  }  } else if (strArray1[0].equals("@Key") && row == 0) {  Properties ht = new Properties();  ht.setProperty(strArray1[1], strArray1[2]);  vec.add(ht);  row++;  } else if (strArray1[0].equals("@Key") && row > 0) {  Properties ht2 = new Properties();  ht2.put(strArray1[1], strArray1[2]);  vec.add(ht2);  row++;  }  }  }  configMap.put(currentNode, (ArrayList)vec.clone());  } catch (FileNotFoundException e) {  configMap = null;  e.printStackTrace();  return false;  } catch (IOException e) {  configMap = null;  e.printStackTrace();  return false;  }  }  return true;  }  try {  fileReader = new FileReader(%%1); //"Setup.ini"  } catch (FileNotFoundException e1) {  e1.printStackTrace();  }  if (readIni()) {  ArrayList<Properties> li = null;  li = (ArrayList<Properties>) configMap.get(%%2); //"[DataSource]"  for (Properties pro : li) {  if(pro.containsKey(%%3))  %%4=pro.getProperty(%%3);  }  }  try {  fileReader.close();  } catch (IOException e) {  e.printStackTrace();  }    34.合并一个目录下所有的文件  //import java.io.*;  File combinefiles=new File(%%1);  File[] files=combinefiles.listFiles();  FileOutputStream fs;  try {  fs=new FileOutputStream(new File(%%2));  }  catch(IOException e){  e.printStackTrace();  }  for(int i=0;i<files.length;i++){  if(files[i].isFile()){  try {  FileInputStream inStream=new FileInputStream(files[i]);  byte[] buffer = new byte[10240];  int byteread;  while((byteread=inStream.read(buffer))!=-1)  fs.write(buffer,0,byteread);  inStream.close();  }  catch(Exception e){  //复制文件出错  e.printStackTrace();  }  }  }  try {  fs.close();  }  catch(IOException e){  e.printStackTrace();  }    35.写入ini文件属性  /*  import java.io.*;  import java.util.*;  import java.util.regex.*;  private static HashMap configMap=null;  */  if (readIni()) {  ArrayList<Properties> li = null;  try {  FileWriter fw = new FileWriter(%%1);  li = (ArrayList<Properties>) configMap.get(%%2); //"[DataSource]"  fw.write("%%2\r\n");  for (Properties pro : li) {  if (pro.containsKey(%%3)) //"ip"  fw.write("%%3=" + %%6 + "\r\n");  }  fw.flush();  fw.close();  } catch (IOException e) {  e.printStackTrace();  }  }    36.获得当前路径  String %%1=getClass().getResource("/").getPath();  //String %%1=System.getProperty("user.dir");    37.读取XML数据库  /*  import java.io.*;  import javax.xml.parsers.*;  import org.w3c.dom.*;  private static Document document;  private static Element node;  */  File xml_file = new File(%%1);  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  try {  DocumentBuilder builder = factory.newDocumentBuilder();  document = builder.parse(xml_file);  } catch (Exception e) {  e.printStackTrace();  }  String subNodeTag = %%2;  Element rootNode = document.getDocumentElement();  //%%2="Product" //%%4="id" //%%6="port"  //%%3="Name" //%%5="001"  NodeList nlist = rootNode.getElementsByTagName(subNodeTag);  int len = nlist.getLength();  for (int i = 0; i < len; i++) {  node = nlist.item(i);  String getNodeAttrValue = null;  NamedNodeMap attrList = node.getAttributes();  for (int j = 0; j < attrList.getLength(); j++) {  if (attrList.item(j).getNodeName().equals(%%4)) {  getNodeAttrValue = attrList.item(j).getNodeValue();  break;  }  }  if (getNodeAttrValue.equals(%%5)) {  nlist = node.getChildNodes();  String %%9=((Element) node).getElementsByTagName(%%3).item(0)  .getFirstChild().getNodeValue();  break;  }  }    38.写入XML数据库  /*  import java.io.*;  import javax.xml.parsers.*;  import org.w3c.dom.*;  import javax.xml.transform.*;  import javax.xml.transform.dom.*;  import javax.xml.transform.stream.*;  private Document document;  private Element node;  */  File xml_file = new File(%%1);  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  try {  DocumentBuilder builder = factory.newDocumentBuilder();  document = builder.parse(xml_file);  } catch (Exception e) {  e.printStackTrace();  }  String subNodeTag = %%2;  Element rootNode = document.getDocumentElement();  // %%2="Product" //%%4="pid" //%%6="author"  // %%3="Name" //%%5="price"  NodeList nlist = rootNode.getElementsByTagName(subNodeTag);  String ss = null;  int len = nlist.getLength();  for (int i = 0; i < len; i++) {  node = (Element) nlist.item(i);  //node.setAttribute(%%4, "0"+String.valueOf(i)); //ID格式化  String getNodeAttrValue = null;  NamedNodeMap attrList = node.getAttributes();  for (int j = 0; j < attrList.getLength(); j++) {  if (attrList.item(j).getNodeName().equals(%%4)) {  getNodeAttrValue = attrList.item(j).getNodeValue();  break;  }  }  if (getNodeAttrValue.equals("001")) {  nlist = node.getChildNodes();  ss = ((Element) node).getElementsByTagName(%%3).item(0)  .getFirstChild().getNodeValue();  ss = ((Element) node).getElementsByTagName(%%6).item(0)  .getFirstChild().getNodeValue();  ss = ((Element) node).getElementsByTagName(%%5).item(0)  .getFirstChild().getNodeValue();  ((Element) node).getElementsByTagName(%%3).item(0)  .getFirstChild().setTextContent(%%7);  ((Element) node).getElementsByTagName(%%6).item(0)  .getFirstChild().setTextContent(%%8);  ((Element) node).getElementsByTagName(%%5).item(0)  .getFirstChild().setTextContent(%%9);  break;  }  }  if (ss == null) {  node = document.createElement(%%2);  node.setAttribute(%%4, String.valueOf(nlist.getLength() + 1));  node.appendChild(document.createTextNode("\n"));  Element server = document.createElement(%%3);  server.appendChild(document.createTextNode(%%7));  node.appendChild(server);  Element ipNode = document.createElement(%%6);  ipNode.appendChild(document.createTextNode(%%8));  node.appendChild(ipNode);  node.appendChild(document.createTextNode("\n"));  Element port = document.createElement(%%5);  port.appendChild(document.createTextNode(%%9));  node.appendChild(port);  node.appendChild(document.createTextNode("\n"));  rootNode.appendChild(node);  }  TransformerFactory tFactory = TransformerFactory.newInstance();  Transformer transformer = null;  try {  transformer = tFactory.newTransformer();  DOMSource source = new DOMSource(document);  StreamResult result = new StreamResult(xml_file);  transformer.transform(source, result);  } catch (IOException e) {  e.printStackTrace();  }    39.ZIP压缩文件  /*  import java.io.*;  import java.util.zip.*;  */  //创建文件输入流对象  FileInputStream fis=new FileInputStream(%%1);  //创建文件输出流对象  FileOutputStream fos=new FileOutputStream(%%2);  //创建ZIP数据输出流对象  ZipOutputStream zipOut=new ZipOutputStream(fos);  //创建指向压缩原始文件的入口  ZipEntry entry=new ZipEntry(args[0]);  try {  zipOut.putNextEntry(entry);  //向压缩文件中输出数据  int nNumber;  byte[] buffer=new byte[1024];  while((nNumber=fis.read(buffer))!=-1)  zipOut.write(buffer,0,nNumber);  //关闭创建的流对象  zipOut.close();  fos.close();  fis.close();  }  catch(IOException e)  {  e.printStackTrace();  }    40.ZIP解压缩  /*  import java.io.*;  import java.util.zip.*;  */  //创建文件输入流对象实例  FileInputStream fis=new FileInputStream(%%1);  //创建ZIP压缩格式输入流对象实例  ZipInputStream zipin=new ZipInputStream(fis);  //创建文件输出流对象实例  FileOutputStream fos=new FileOutputStream(%%2);  //获取Entry对象实例  ZipEntry entry=zipin.getNextEntry();  byte[] buffer=new byte[1024];  int nNumber;  try{  while((nNumber=zipin.read(buffer,0,buffer.length))!=-1)  fos.write(buffer,0,nNumber);  //关闭文件流对象  zipin.close();  fos.close();  fis.close();  }  catch(IOException e) {  e.printStackTrace();  }    41.获得应用程序完整路径  String %%1=System.getProperty("user.dir");    42.递归删除目录中的文件  /*  import java.io.*;  import java.util.*;  */  ArrayList<String> folderList = new ArrayList<String>();  folderList.add(%%1);  for (int j = 0; j < folderList.size(); j++) {  File file = new File(folderList.get(j));  File[] files = file.listFiles();  ArrayList<File> fileList = new ArrayList<File>();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory()) {  folderList.add(files[i].getPath());  } else {  fileList.add(files[i]);  }  }  for (File f : fileList) {  f.delete();  }  }    43.ZIP压缩文件夹  /*  import java.io.*;  import java.util.*;  import java.util.zip.*;  */  public static String zipFileProcess(ArrayList outputZipFileNameList, String outputZipNameAndPath) {  ArrayList fileNames = new ArrayList();  ArrayList files = new ArrayList();  FileOutputStream fileOut = null;  ZipOutputStream outputStream = null;  FileInputStream fileIn = null;  StringBuffer sb = new StringBuffer(outputZipNameAndPath);  // FileInputStream fileIn =null;  try {  if (outputZipNameAndPath.indexOf(".zip") != -1) {  outputZipNameAndPath = outputZipNameAndPath;  } else {  sb.append(".zip");  outputZipNameAndPath = sb.toString();  }  fileOut = new FileOutputStream(outputZipNameAndPath);  outputStream = new ZipOutputStream(fileOut);  int outputZipFileNameListSize = 0;  if (outputZipFileNameList != null) {  outputZipFileNameListSize = outputZipFileNameList.size();  }  for (int i = 0; i < outputZipFileNameListSize; i++) {  File rootFile = new File(outputZipFileNameList.get(i).toString());  listFile(rootFile, fileNames, files, "");  }  for (int loop = 0; loop < files.size(); loop++) {  fileIn = new FileInputStream((File) files.get(loop));  outputStream.putNextEntry(new ZipEntry((String) fileNames.get(loop)));  byte[] buffer = new byte[1024];  while (fileIn.read(buffer) != -1) {  outputStream.write(buffer);  }  outputStream.closeEntry();  fileIn.close();  }  return outputZipNameAndPath;  } catch (IOException ioe) {  return null;  } finally {  if (outputStream != null) {  try {  outputStream.close();  } catch (IOException e) {  }  }  if (fileIn != null) {  try {  fileIn.close();  } catch (IOException e) {  }  }  }  }  private static void listFile(File parentFile, List nameList, List fileList, String directoryName) {  if (parentFile.isDirectory()) {  File[] files = parentFile.listFiles();  for (int loop = 0; loop < files.length; loop++) {  listFile(files[loop], nameList, fileList, directoryName + parentFile.getName() + "/");  }  } else {  fileList.add(parentFile);  nameList.add(directoryName + parentFile.getName());  }  }  String savePath=%%1;  ArrayList<String> outputZipFileName=new ArrayList<String>();  outputZipFileName.add(%%2);  zipFileProcess(outputZipFileName,savePath);    44.IDEA加密算法  private byte[] bytekey;  public byte[] getKey(String key){  int len1 =key.length();  if (len1>=16) {  key=key.substring(0, 16);  } else {  for (int i=0;i<16-len1;i++){  key=key.concat("0");  }  }  bytekey=key.getBytes();  return bytekey;  }  /**  * 加密String明文输入,String密文输出  * @param strMing  * @return  */  public String getEncString(String strMing) {  byte[] byteMi = null;  byte[] byteMing = null;  String strMi = "";  try {  return byte2hex(IdeaEncrypt(bytekey,strMing.getBytes(),true) );  }  catch(Exception e){  e.printStackTrace();  }  finally {  byteMing = null;  byteMi = null;  }  return strMi;  }  /**  * 解密 以String密文输入,String明文输出  * @param strMi  * @return  */  public String getDesString(String strMi) {  byte[] byteMing = null;  byte[] byteMi = null;  String strMing = "";  try {  String tmp= new String(IdeaEncrypt(bytekey,hex2byte(strMi.getBytes()),false ));  int len1=tmp.length();  return tmp.substring(0, len1-6);  }  catch(Exception e) {  e.printStackTrace();  }  finally {  byteMing = null;  byteMi = null;  }  return strMing;  }  private byte[] Encrypt(byte[] bytekey, byte[] inputBytes, boolean flag) {  byte[] encryptCode = new byte[8];  // 分解子密钥  int[] key = get_subkey(flag, bytekey);  // 进行加密操作  encrypt(key, inputBytes, encryptCode);  // 返回加密数据  return encryptCode;  }    private int bytesToInt(byte[] inBytes, int startPos) {  return ((inBytes[startPos] << 8) & 0xff00) +  (inBytes[startPos + 1] & 0xff);  }    private void intToBytes(int inputInt, byte[] outBytes, int startPos) {  outBytes[startPos] = (byte) (inputInt >>> 8);  outBytes[startPos + 1] = (byte) inputInt;  }    private int x_multiply_y(int x, int y) {  if (x == 0) {  x = 0x10001 - y;  } else if (y == 0) {  x = 0x10001 - x;  } else {  int tmp = x * y;  y = tmp & 0xffff;  x = tmp >>> 16;  x = (y - x) + ((y < x) ? 1 : 0);  }    return x & 0xffff;  }    private void encrypt(int[] key, byte[] inbytes, byte[] outbytes) {  int k = 0;  int a = bytesToInt(inbytes, 0);  int b = bytesToInt(inbytes, 2);  int c = bytesToInt(inbytes, 4);  int d = bytesToInt(inbytes, 6);    for (int i = 0; i < 8; i++) {  a = x_multiply_y(a, key[k++]);  b += key[k++];  b &= 0xffff;  c += key[k++];  c &= 0xffff;  d = x_multiply_y(d, key[k++]);    int tmp1 = b;  int tmp2 = c;  c ^= a;  b ^= d;  c = x_multiply_y(c, key[k++]);  b += c;  b &= 0xffff;  b = x_multiply_y(b, key[k++]);  c += b;  c &= 0xffff;  a ^= b;  d ^= c;  b ^= tmp2;  c ^= tmp1;  }    intToBytes(x_multiply_y(a, key[k++]), outbytes, 0);  intToBytes(c + key[k++], outbytes, 2);  intToBytes(b + key[k++], outbytes, 4);  intToBytes(x_multiply_y(d, key[k]), outbytes, 6);  }    private int[] encrypt_subkey(byte[] byteKey) {  int[] key = new int[52];    if (byteKey.length < 16) {  byte[] tmpkey = new byte[16];  System.arraycopy(byteKey, 0, tmpkey,  tmpkey.length - byteKey.length, byteKey.length);  byteKey = tmpkey;  }    for (int i = 0; i < 8; i++) {  key[i] = bytesToInt(byteKey, i * 2);  }    for (int j = 8; j < 52; j++) {  if ((j & 0x7) < 6) {  key[j] = (((key[j - 7] & 0x7f) << 9) | (key[j - 6] >> 7)) &  0xffff;  } else if ((j & 0x7) == 6) {  key[j] = (((key[j - 7] & 0x7f) << 9) | (key[j - 14] >> 7)) &  0xffff;  } else {  key[j] = (((key[j - 15] & 0x7f) << 9) | (key[j - 14] >> 7)) &  0xffff;  }  }    return key;  }    private int fun_a(int a) {  if (a < 2) {  return a;  }    int b = 1;  int c = 0x10001 / a;    for (int i = 0x10001 % a; i != 1;) {  int d = a / i;  a %= i;  b = (b + (c * d)) & 0xffff;    if (a == 1) {  return b;  }  d = i / a;  i %= a;  c = (c + (b * d)) & 0xffff;  }    return (1 - c) & 0xffff;  }    private int fun_b(int b) {  return (0 - b) & 0xffff;  }    private int[] uncrypt_subkey(int[] key) {  int dec = 52;  int asc = 0;  int[] unkey = new int[52];  int aa = fun_a(key[asc++]);  int bb = fun_b(key[asc++]);  int cc = fun_b(key[asc++]);  int dd = fun_a(key[asc++]);  unkey[--dec] = dd;  unkey[--dec] = cc;  unkey[--dec] = bb;  unkey[--dec] = aa;    for (int k1 = 1; k1 < 8; k1++) {  aa = key[asc++];  bb = key[asc++];  unkey[--dec] = bb;  unkey[--dec] = aa;  aa = fun_a(key[asc++]);  bb = fun_b(key[asc++]);  cc = fun_b(key[asc++]);  dd = fun_a(key[asc++]);  unkey[--dec] = dd;  unkey[--dec] = bb;  unkey[--dec] = cc;  unkey[--dec] = aa;  }    aa = key[asc++];  bb = key[asc++];  unkey[--dec] = bb;  unkey[--dec] = aa;  aa = fun_a(key[asc++]);  bb = fun_b(key[asc++]);  cc = fun_b(key[asc++]);  dd = fun_a(key[asc]);  unkey[--dec] = dd;  unkey[--dec] = cc;  unkey[--dec] = bb;  unkey[--dec] = aa;    return unkey;  }    private int[] get_subkey(boolean flag, byte[] bytekey) {  if (flag) {  return encrypt_subkey(bytekey);  } else {  return uncrypt_subkey(encrypt_subkey(bytekey));  }  }    private byte[] ByteDataFormat(byte[] data, int unit) {  int len = data.length;  int padlen = unit - (len % unit);  int newlen = len + padlen;  byte[] newdata = new byte[newlen];  System.arraycopy(data, 0, newdata, 0, len);    for (int i = len; i < newlen; i++)  newdata[i] = (byte) padlen;    return newdata;  }    public byte[] IdeaEncrypt(byte[] idea_key, byte[] idea_data, boolean flag) {  byte[] format_key = ByteDataFormat(idea_key, 16);  byte[] format_data = ByteDataFormat(idea_data, 8);    int datalen = format_data.length;  int unitcount = datalen / 8;  byte[] result_data = new byte[datalen];    for (int i = 0; i < unitcount; i++) {  byte[] tmpkey = new byte[16];  byte[] tmpdata = new byte[8];  System.arraycopy(format_key, 0, tmpkey, 0, 16);  System.arraycopy(format_data, i * 8, tmpdata, 0, 8);    byte[] tmpresult = Encrypt(tmpkey, tmpdata, flag);  System.arraycopy(tmpresult, 0, result_data, i * 8, 8);  }    return result_data;  }    /**  * 二行制转字符串  * @param b  * @return  */  public static String byte2hex(byte[] b) { //一个字节的数,  // 转成16进制字符串  String hs = "";  String stmp = "";  for (int n = 0; n < b.length; n++) {  //整数转成十六进制表示  stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));  if (stmp.length() == 1)  hs = hs + "0" + stmp;  else  hs = hs + stmp;  }  return hs.toUpperCase(); //转成大写  }    public static byte[] hex2byte(byte[] b) {  if((b.length%2)!=0)  throw new IllegalArgumentException("长度不是偶数");  byte[] b2 = new byte[b.length/2];  for (int n = 0; n < b.length; n+=2) {  String item = new String(b,n,2);  // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个进制字节  b2[n/2] = (byte)Integer.parseInt(item,16);  }    return b2;  }    public static void main(String[] args) {      IDEA idea = new IDEA();    idea.getKey("aadd");//生成密匙    String strEnc = idea.getEncString("1234567890");//加密字符串,返回String的密文  System.out.println(strEnc);    String strDes = idea.getDesString(strEnc);//把String 类型的密文解密  System.out.println(strDes);      // String key = "0000000000000000";  // String data = "11111111冯";  // byte[] bytekey = key.getBytes();  // byte[] bytedata = data.getBytes();  //  // IDEA idea = new IDEA();  // byte[] encryptdata = idea.IdeaEncrypt(bytekey, bytedata, true);  // byte[] decryptdata = idea.IdeaEncrypt(bytekey, encryptdata, false);  //  // System.out.println("--------------------------------");  //  // for (int i = 0; i < bytedata.length; i++) {  // System.out.print(" " + bytedata[i] + " ");  // }  //  // System.out.println("");  //  // for (int i = 0; i < encryptdata.length; i++) {  // System.out.print(" " + encryptdata[i] + " ");  // }  //  // System.out.println("");  //  // for (int i = 0; i < decryptdata.length; i++) {  // System.out.print(" " + decryptdata[i] + " ");  // }    }    45.验证Schema  /*  import javax.xml.*;  import javax.xml.transform.stream.*;  import javax.xml.validation.*;  import org.xml.sax.*;  */  SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);  StreamSource ss = new StreamSource(%%1); //"mySchema.xsd"  try {  Schema schema = factory.newSchema(ss);  } catch (SAXException e) {  e.printStackTrace();  }    46.Grep  /*  import java.util.regex.*;  import java.io.*;  */  throws Exception  Pattern pattern = Pattern.compile(%%1); // 第一个参数为需要匹配的字符串  Matcher matcher = pattern.matcher("");  String file = %%2;  BufferedReader br = null;  String line;  try {  br = new BufferedReader (new FileReader (file)); // 打开文件  } catch (IOException e) {  // 没有打开文件,则产生异常  System.err.println ("Cannot read '" + file  + "': " + e.getMessage());  }  while ((line = br.readLine()) != null) { // 读入一行,直到文件结束  matcher.reset (line); // 匹配字符串  if (matcher.find()) { // 如果有匹配的字符串,则输出  //line  }  }  br.close(); // 关闭文件    47.直接创建多级目录  //import java.io.*;  File f=new File(%%1);  f.mkdirs();    48.批量重命名  //import java.io.*;  File target = new File("%%1");  String[] files = target.list();  File f = null;  String filename = null;  for (String file : files) {  f = new File(target, file);  filename = f.getName();  if (filename.substring(filename.lastIndexOf('.')).equalsIgnoreCase(  "%%2")) {  f.renameTo(new File(target.getAbsolutePath(), filename.replace(  "%%2", "%%3")));  // 这里可以反复使用replace替换,当然也可以使用正则表达式来替换了 ".txt" ".bat"  }  }    49.文本查找替换  //import java.nio.*;  String s1=%%1;  String s2=%%2;  String s3=%%3;  int pos=%%4;  /*变量i和j分别表示主串和模式串中当前字符串的位置,k表示匹配次数*/  int i,j,k=0;  i = pos;  j = 0;  //将s1转化成StringBuffer型进行操作  repStr = new StringBuffer(s1);  while(i<repStr.length()&&j<s2.length())  {  if(repStr.charAt(i) == s2.charAt(j))  {  ++i; ++j;  if(j==s2.length())  {  /*j=s2.length()表示字符串匹配成功,匹配次数加1,此外对主串进行字符串替换*/  k = k+1;  repStr.replace(i-j,i,s3);  //将j进行重新赋值开始新的比较  j = 0;  }  }  else {i = i-j+1; j = 0;}  }  return k;    50.文件关联  //import java.io.*;  try {  Runtime.getRuntime().exec(%%1); //"assoc .txt =mynote" "assoc [.ext[=[filetype]]]"  } catch (IOException e) {  e.printStackTrace();  }    51.批量转换编码从GB2312到Unicode      52.设置JDK环境变量  @echo off  IF EXIST %1\bin\java.exe (  rem 如输入正确的 Java2SDK 安装目录,开始设置环境变量  @setx JAVA_HOME %1  @setx path %path%;%JAVA_HOME%\bin  @setx classpath %classpath%;.  @setx classpath %classpath%;%JAVA_HOME%\lib\tools.jar  @setx classpath %classpath%;%JAVA_HOME%\lib\dt.jar  @setx classpath %classpath%;%JAVA_HOME%\jre\lib\rt.jar  @echo on  @echo Java 2 SDK 环境参数设置完毕,正常退出。  ) ELSE (  IF "%1"=="" (  rem 如没有提供安装目录,提示之后退出  @echo on  @echo 没有提供 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。  ) ELSE (  rem 如果提供非空的安装目录但没有bin\java.exe,则指定的目录为错误的目录  @echo on  @echo 非法的 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。  )  )  //http://sourceforge.net/projects/jregistrykey/  //import ca.beq.util.win32.registry.*;  //import java.util.*;  1.打开键  RegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders");  2.添加键  RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");  r.create();  9.写入字符串值  RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");  RegistryValue v = new RegistryValue("myVal", ValueType.REG_SZ, "data");  r.setValue(v);  6.获取DWORD值  RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");  if(r.hasValue("myValue")) {  RegistryValue v = r.getValue("myValue");  v.setType(ValueType.REG_DWORD);  } // if      53.批量转换编码从Unicode到GB2312    54.删除空文件夹  //import java.io.*;  File f=new File(%%1);  if (isFolerNull(f)) {  for (File file :f.listFiles()) {  if (file.list().length == 0)  file.delete();  }  }    55.GB2312文件转UTF-8格式  //import java.io.*;  public class CharsetConvertor {  public static void main(String[] args) {  String str = "This is a test for *中网!@#$。,?";  try {  File f = new File("D:/test.txt");  FileOutputStream fio = new FileOutputStream(f);  String s = gbToUtf8(str);  fio.write(s.getBytes("UTF-8"));  fio.close();  }  catch (Exception e) {  e.printStackTrace();  }  }    public static String gbToUtf8(String str) throws UnsupportedEncodingException {  StringBuffer sb = new StringBuffer();  for (int i = 0; i < str.length(); i++) {  String s = str.substring(i, i + 1);  if (s.charAt(0) > 0x80) {  byte[] bytes = s.getBytes("Unicode");  String binaryStr = "";  for (int j = 2; j < bytes.length; j += 2) {  // the first byte  String hexStr = getHexString(bytes[j + 1]);  String binStr = getBinaryString(Integer.valueOf(hexStr, 16));  binaryStr += binStr;  // the second byte  hexStr = getHexString(bytes[j]);  binStr = getBinaryString(Integer.valueOf(hexStr, 16));  binaryStr += binStr;  }  // convert unicode to utf-8  String s1 = "1110" + binaryStr.substring(0, 4);  String s2 = "10" + binaryStr.substring(4, 10);  String s3 = "10" + binaryStr.substring(10, 16);  byte[] bs = new byte[3];  bs[0] = Integer.valueOf(s1, 2).byteValue();  bs[1] = Integer.valueOf(s2, 2).byteValue();  bs[2] = Integer.valueOf(s3, 2).byteValue();  String ss = new String(bs, "UTF-8");  sb.append(ss);  } else {  sb.append(s);  }  }  return sb.toString();  }    private static String getHexString(byte b) {  String hexStr = Integer.toHexString(b);  int m = hexStr.length();  if (m < 2) {  hexStr = "0" + hexStr;  } else {  hexStr = hexStr.substring(m - 2);  }  return hexStr;  }    private static String getBinaryString(int i) {  String binaryStr = Integer.toBinaryString(i);  int length = binaryStr.length();  for (int l = 0; l < 8 - length; l++) {  binaryStr = "0" + binaryStr;  }  return binaryStr;  }  }      56.UTF-8文件转GB2312格式  private String utf8Togb2312(String str){  StringBuffer sb = new StringBuffer();  for(int i=0; i<str.length(); i++) {  char c = str.charAt(i);  switch (c) {  case '+':  sb.append(' ');  break;  case '%':  try {  sb.append((char)Integer.parseInt(  str.substring(i+1,i+3),16));  }  catch (NumberFormatException e) {  throw new IllegalArgumentException();  }  i += 2;  break;  default:  sb.append(c);  break;  }  }  // Undo conversion to external encoding  String result = sb.toString();  String res=null;  try{  byte[] inputBytes = result.getBytes("8859_1");  res= new String(inputBytes,"UTF-8");  }  catch(Exception e){}  return res;  }    57.获取文件路径的父路径  String %%2=%%1.substring(0,%%1.lastIndexOf("\\"));    58.Unicode文件转UTF-8格式  try {  // Convert from Unicode to UTF-8  String string = "abc\u5639\u563b";  byte[] utf8 = string.getBytes("UTF-8");  // Convert from UTF-8 to Unicode  string = new String(utf8, "UTF-8");  } catch (UnsupportedEncodingException e) {  }  /**  * unicode 转换成 utf-8  * @author fanhui  * 2007-3-15  * @param theString  * @return  */  public static String unicodeToUtf8(String theString) {  char aChar;  int len = theString.length();  StringBuffer outBuffer = new StringBuffer(len);  for (int x = 0; x < len;) {  aChar = theString.charAt(x++);  if (aChar == '\\') {  aChar = theString.charAt(x++);  if (aChar == 'u') {  // Read the xxxx  int value = 0;  for (int i = 0; i < 4; i++) {  aChar = theString.charAt(x++);  switch (aChar) {  case '0':  case '1':  case '2':  case '3':  case '4':  case '5':  case '6':  case '7':  case '8':  case '9':  value = (value << 4) + aChar - '0';  break;  case 'a':  case 'b':  case 'c':  case 'd':  case 'e':  case 'f':  value = (value << 4) + 10 + aChar - 'a';  break;  case 'A':  case 'B':  case 'C':  case 'D':  case 'E':  case 'F':  value = (value << 4) + 10 + aChar - 'A';  break;  default:  throw new IllegalArgumentException(  "Malformed \\uxxxx encoding.");  }  }  outBuffer.append((char) value);  } else {  if (aChar == 't')  aChar = '\t';  else if (aChar == 'r')  aChar = '\r';  else if (aChar == 'n')  aChar = '\n';  else if (aChar == 'f')  aChar = '\f';  outBuffer.append(aChar);  }  } else  outBuffer.append(aChar);  }  return outBuffer.toString();  }    59.CRC循环冗余校验  /*  import java.nio.*;  import java.util.zip.*;  */  try {  FileInputStream in = new FileInputStream(%%1);  FileChannel channel = in.getChannel();  CRC32 crc = new CRC32();  int length = (int)channel.size();  MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, length);  for(int i = 0;i<length;i++)  {  int c = buffer.get(i);  crc.update(c);  }  System.out.println("crc校验和:"+(Long.toHexString(crc.getValue())).toUpperCase());  } catch (Exception e) {  e.printStackTrace();  }    60.判断是否为空文件  //import java.io.*;  FileReader fr=new FileReader(%%1);  if(fr.read()==1)  //空白文件    61.终止程序  Runtime.exec("taskkill /F /IM %%1.exe");    62.定时关机  import java.awt.*;  import java.awt.event.*;  import java.awt.geom.*;  import java.util.*;  import javax.swing.*;    public class ClockFrame extends JFrame {  private JComboBox hourBox, minuteBox, secondBox;    private int hour, minute, second, totalSeconds, currentSeconds;    private long argue;    private GregorianCalendar calendar;    private boolean change = true;    private static final int WIDTH = 200;    private static final int HEIGHT = 150;    public ClockFrame() {    setTitle("关机定时");  setSize(200, 150);    Container contentPanel = getContentPane();    JPanel timePanel = new JPanel();  timePanel.setLayout(new GridLayout(4, 2));    JLabel minuteLable = new JLabel("设置分钟");  timePanel.add(minuteLable);  minuteBox = new JComboBox();  timePanel.add(minuteBox);  for (int i = 0; i < 60; i++) {  minuteBox.addItem(i);  }  minuteBox.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent evt) {  minute = ((Integer) minuteBox.getSelectedItem()).intValue();  }  });    JLabel secondLable = new JLabel("设置秒钟");  timePanel.add(secondLable);  secondBox = new JComboBox();  timePanel.add(secondBox);  for (int i = 0; i < 60; i++) {  secondBox.addItem(i);  }  secondBox.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent evt) {  second = ((Integer) secondBox.getSelectedItem()).intValue();  }  });  contentPanel.add(timePanel, BorderLayout.CENTER);    JButton check = new JButton("确定");  contentPanel.add(check, BorderLayout.SOUTH);  check.addActionListener(new ActionListener() {  public void actionPerformed(ActionEvent evt) {  JButton check=(JButton) evt.getSource();  if (check.getText().equals("确定")) {  calendar = new GregorianCalendar();  int currentSeconds = calendar.get(Calendar.HOUR_OF_DAY)  * 3600 + calendar.get(Calendar.MINUTE) * 60  + calendar.get(Calendar.SECOND);  totalSeconds = hour * 3600 + minute * 60 + second;    if (totalSeconds - currentSeconds >= 0) {  argue = (totalSeconds - currentSeconds) * 1000;  JOptionPane.showMessageDialog(ClockFrame.this,  "您设置的时间为 " + hour + ":" + minute + ":" + second  + "\n程序将在后台运行,并在此时自动关闭计算机!", "设置成功",  JOptionPane.INFORMATION_MESSAGE);  hideFrame();  }  try {  // Thread.sleep(argue);//这句没用  Runtime.getRuntime().exec(  "shutdown.exe -s -c \"我要关机了噢!不好意思!\" -t "  + totalSeconds);  check.setText("取消");  } catch (Exception e) {  e.printStackTrace();  }  }else{  try {  Runtime.getRuntime().exec("shutdown.exe -a");  check.setText("确定");  } catch (Exception e) {  e.printStackTrace();  }  }  }  });  }    private void hideFrame() {  this.setVisible(false);  }    public static void main(String[] args) {  JFrame frame = new ClockFrame();  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  frame.setLocationByPlatform(true);  frame.show();  }  }    63.显示进程列表  //import java.io.*;  BufferedReader br=null;  try {  Process proc=Runtime.getRuntime().exec("tasklist");  br=new BufferedReader(new InputStreamReader(proc.getInputStream()));  @SuppressWarnings("unused")  String line=null;  while((line=br.readLine())!=null){  //br.readLine()  }  } catch (IOException e) {  e.printStackTrace();  }finally{  if(br!=null){  try {  br.close();  } catch (Exception e) {  e.printStackTrace();  }  }  }    64.遍历文件夹列出文件大小    65.目录下所有文件移动到整合操作  /*  import java.io.*;  import java.util.*;  import javax.swing.*;  */  JFileChooser Jfc = new JFileChooser("请选择源路径"); // 建立选择档案对话方块盒 Jfc  Jfc.showDialog(null, %%1);  if (!Jfc.getSelectedFile() != null) {  return;  }  String %%1 = Jfc.getSelectedFile().getParent();  Jfc = new JFileChooser("请选择目标路径"); // 建立选择档案对话方块盒 Jfc  Jfc.showDialog(null, %%1);  if (!Jfc.getSelectedFile() != null) {  return;  }  String %%2 = Jfc.getSelectedFile().getParent();    66.对目标压缩文件解压缩到指定文件夹  /*  import java.io.*;  import java.util.zip.*;  */  String zipFileName=%%1;  String extPlace=%%2;  File myFolderPath = new File(extPlace);  try {  if (!myFolderPath.exists()) {  myFolderPath.mkdir();  }  } catch (Exception e) {  //新建目录操作出错  e.printStackTrace();  return;  }  try {  ZipInputStream in = new ZipInputStream(new FileInputStream(  zipFileName));  ZipEntry entry = null;  while ((entry = in.getNextEntry()) != null) {  String entryName = entry.getName();  File file = new File(extPlace , entryName);  if (entry.isDirectory()) {  file.mkdirs();  } else {  FileOutputStream os = new FileOutputStream(file);  // Transfer bytes from the ZIP file to the output  // file  byte[] buf = new byte[10240];  int len;  while ((len = in.read(buf)) > 0) {  os.write(buf, 0, len);  }  os.close();  in.closeEntry();  }  }  } catch (IOException e) {  e.printStackTrace();  }    67.创建目录副本整合操作  /*  import java.io.*;  import java.util.*;  import javax.swing.*;  */  JFileChooser Jfc = new JFileChooser("请选择源路径"); // 建立选择档案对话方块盒 Jfc  Jfc.showDialog(null, %%1);  if (!Jfc.getSelectedFile() != null) {  return;  }  String %%1 = Jfc.getSelectedFile().getParent();  Jfc = new JFileChooser("请选择目标路径"); // 建立选择档案对话方块盒 Jfc  Jfc.showDialog(null, %%1);  if (!Jfc.getSelectedFile() != null) {  return;  }  String %%2 = Jfc.getSelectedFile().getParent();    68.打开网页  //import java.io.*;  try{  String command = "C:\\Program Files\\Internet Explorer\\Iexplore.exe "+%%1;  Runtime.getRuntime().exec(command);  } catch (IOException ex) {  ex.printStackTrace();  }    69.删除空文件夹整合操作  /*  import java.io.*;  import java.util.*;  import javax.swing.*;  */    70.获取磁盘所有分区,把结果放在数组drives中  String root; //root代表盘符路径  for(i=0;i<20;i++) //0-20代表最大的盘符数  {  root.Format("%c:\\",allfenqu[i]);  if(GetDriveType(root)==5)  allfenqu[i]='\0';  }    但我用这样的代码时结果却无法去掉光驱盘符,allfenqu[]中还是会包含光驱盘符:  String root;  for(i=0;i<20;i++)  {  root=allfenqu[i]+":\\";  if(GetDriveType(root)==5)  allfenqu[i]='\0';  }    71.激活一个程序或程序关联的文件  //import java.io.*;  try {  Runtime.getRuntime().exec(%%1);  } catch (IOException e) {  e.printStackTrace();  }    72.MP3播放  //必须下载 jmf包  //import javax.media.bean.playerbean.MediaPlayer; //必须下载 jmf 媒体播放包  MediaPlayer player;  player = new MediaPlayer();  setLayout(new FlowLayout());  try{  player.setMediaLocation("file:/F:\\音乐\\mp3\\黑白配.mp3");// <<file:/>>不能删除 音频文件路径  } catch (Exception e) {  System.err.println("文件不存在");  }  player.start();  player.stop();    73.WAV播放  /*  import javax.sound.sampled.*;  import java.io.*;  */  private AudioFormat format;  private byte[] samples;  private String filename;  try {  // open the audio input stream  AudioInputStream stream =AudioSystem.getAudioInputStream(new File(filename));  format = stream.getFormat();  // get the audio samples  samples = getSamples(stream);  }  catch (UnsupportedAudioFileException ex) {  ex.printStackTrace();  }  catch (IOException ex) {  ex.printStackTrace();  }    private byte[] getSamples(AudioInputStream audioStream) {  // get the number of bytes to read  int length = (int)(audioStream.getFrameLength() * format.getFrameSize());    // read the entire stream  byte[] samples = new byte[length];  DataInputStream is = new DataInputStream(audioStream);  try {  is.readFully(samples);  }  catch (IOException ex) {  ex.printStackTrace();  }    // return the samples  return samples;  }    public void play(InputStream source) {    // use a short, 100ms (1/10th sec) buffer for real-time  // change to the sound stream  int bufferSize = format.getFrameSize() *  Math.round(format.getSampleRate() / 10);  byte[] buffer = new byte[bufferSize];    // create a line to play to  SourceDataLine line;  try {  DataLine.Info info =  new DataLine.Info(SourceDataLine.class, format);  line = (SourceDataLine)AudioSystem.getLine(info);  line.open(format, bufferSize);  }  catch (LineUnavailableException ex) {  ex.printStackTrace();  return;  }    // start the line  line.start();    // copy data to the line  try {  int numBytesRead = 0;  while (numBytesRead != -1) {  numBytesRead =  source.read(buffer, 0, buffer.length);  if (numBytesRead != -1) {  line.write(buffer, 0, numBytesRead);  }  }  }  catch (IOException ex) {  ex.printStackTrace();  }    // wait until all data is played, then close the line  line.drain();  line.close();  }    throws Exception  String filename=%%1;  InputStream stream =new ByteArrayInputStream(sound.getSamples());  // play the sound  sound.play(stream);    74.写图像到剪切板  /*  import java.awt.*;  import java.awt.datatransfer.*;  import java.io.*;  private final Image image;  */  Transferable trans = new Transferable() {  public DataFlavor[] getTransferDataFlavors() {  return new DataFlavor[] { DataFlavor.imageFlavor };  }    public boolean isDataFlavorSupported(DataFlavor flavor) {  return DataFlavor.imageFlavor.equals(flavor);  }    public Object getTransferData(DataFlavor flavor)  throws UnsupportedFlavorException, IOException {  if (isDataFlavorSupported(flavor))  return image;  throw new UnsupportedFlavorException(flavor);  }  };  Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans,  null);    75.从剪贴板复制图像到窗体    76.删除文件夹下的所有文件且不删除文件夹下的文件夹  /*  import java.io.*;  import java.util.*;  */  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(%%1);  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  ArrayList<File> fileList = new ArrayList<File>();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory()) {  folderList.add(files[i].getPath());  } else {  fileList.add(files[i]);  }  }  for (File f : fileList) {  f.delete();  }  }    78.Unicode文件转GB2312格式  private static boolean isNeedConvert(char para){  return ((para&(0x00FF))!=para);  }  String dataStr=%%1;"\\u9009 \\u5173";  int index = 0;  StringBuffer buffer = new StringBuffer();  while(index<dataStr.length()) {  if(!"\\u".equals(dataStr.substring(index,index+2))){  buffer.append(dataStr.charAt(index));  index++;  continue;  }  String charStr = "";  charStr = dataStr.substring(index+2,index+6);  char letter = (char) Integer.parseInt(charStr, 16 );  buffer.append(letter);  index+=6;  }  String %%2=buffer.toString();    79.开源程序库Xercesc-C++代码工程中内联  import java.io.*;  import java.util.*;  import java.util.regex.*;  public class InlineXercesc {  private final String filter = ".cpp";    private ArrayList<String> all = new ArrayList<String>();    private LinkedList<String> fal2 = new LinkedList<String>();    private static String CurDir = System.getProperty("user.dir");    private void doSearch(String path) {  File filepath = new File(path);  if (filepath.exists() && filepath.isDirectory()) {  File[] fileArray = filepath.listFiles();  for (File f : fileArray) {  if (f.isDirectory()) {  doSearch(f.getPath());  } else {  if (f.getName().indexOf(filter) >= 0) {  for (String file : all) {  if (file.substring(file.lastIndexOf("\\") + 1)  .equals(f.getName())) {  fal2.add(f.getAbsolutePath());  }  }  }  }  }  }  }    public InlineXercesc(String lib) throws IOException {  String SourceLib = "D:\\Desktop\\大项目\\xerces-c-3.0.1\\src";  Pattern pattern = Pattern.compile("include.*?" + lib + ".*?>"); // 第一个参数为需要匹配的字符串  Matcher matcher = pattern.matcher("");  LinkedList<String> fal = new LinkedList<String>();  File delfile = new File(CurDir);  File[] files2 = delfile.listFiles();  for (int l = 0; l < files2.length; l++) {  if (files2[l].isDirectory()) {  String enumDir = CurDir + "\\" + files2[l].getName() + "\\";  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(files2[l].getAbsolutePath());  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory()) {  folderList.add(files[i].getPath());  } else {  String fileStr = files[i].getAbsolutePath(); // 第2个参数开始,均为文件名。  BufferedReader br = null;  String line;  try {  br = new BufferedReader(new FileReader(fileStr)); // 打开文件  } catch (IOException e) {  // 没有打开文件,则产生异常  System.err.println("Cannot read '" + fileStr  + "': " + e.getMessage());  continue;  }  StringBuilder sb = new StringBuilder(2048);  while ((line = br.readLine()) != null) { // 读入一行,直到文件结束  matcher.reset(line); // 匹配字符串  if (matcher.find()) { // 如果有匹配的字符串,则输出  sb.append(line.replace(  line.substring(line.indexOf("<"),  line.lastIndexOf("/") + 1),  "\"").replace('>', '\"'));  line = line.substring(  line.indexOf("<") + 1,  line.lastIndexOf(">")).replace('/',  '\\');  fal.add(SourceLib + "\\" + line);  } else {  sb.append(line);  }  sb.append("\r\n");  }  br.close(); // 关闭文件  FileWriter fw2 = new FileWriter(fileStr);  fw2.write(sb.toString());  fw2.flush();  fw2.close();  }  }  }  while (fal.size() > 0) {  String file = fal.poll(); // 第2个参数开始,均为文件名。  String targetPath = enumDir  + file.substring(file.lastIndexOf("\\") + 1);  if (!new File(targetPath).exists()) {  BufferedReader br = null;  String line;  try {  br = new BufferedReader(new FileReader(file)); // 打开文件  } catch (IOException e) {  // 没有打开文件,则产生异常  System.err.println("Cannot read '" + file + "': "  + e.getMessage());  continue;  }  FileWriter fw = new FileWriter(targetPath);  while ((line = br.readLine()) != null) { // 读入一行,直到文件结束  matcher.reset(line); // 匹配字符串  if (matcher.find()) { // 如果有匹配的字符串,则输出  fal.add(SourceLib  + "\\"  + line.substring(line.indexOf("<") + 1,  line.lastIndexOf(">")).replace(  '/', '\\'));  line = line.replace(line.substring(line  .indexOf("<"),  line.lastIndexOf("/") + 1), "\"");  line = line.replace(">", "\"");    }  fw.write(line + "\r\n");  }  fw.flush();  fw.close();  br.close(); // 关闭文件    }  }  LinkedList<String> folderListArr = new LinkedList<String>();  folderListArr.add(CurDir);  while (folderListArr.size() > 0) {  File file = new File(folderListArr.poll());  File[] files = file.listFiles();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory()) {  folderListArr.add(files[i].getPath());  } else {  if (files[i].getName().substring(  files[i].getName().lastIndexOf('.'))  .equals(".hpp"))  all.add(files[i].getAbsoluteFile().toString()  .replace(".hpp", ".cpp"));  }  }  }  int count = 1;  while (count > 0) {  doSearch(SourceLib);  all.clear();  while (fal2.size() > 0) {  String file1 = fal2.poll(); // 第2个参数开始,均为文件名。  String targetPath = enumDir  + file1.substring(file1.lastIndexOf("\\") + 1);  if (!new File(targetPath).exists()) {  BufferedReader br = null;  String line;  try {  br = new BufferedReader(new FileReader(file1)); // 打开文件  } catch (IOException e) {  // 没有打开文件,则产生异常  System.err.println("Cannot read '" + file1  + "': " + e.getMessage());  continue;  }  FileWriter fw;  try {  fw = new FileWriter(targetPath);  while ((line = br.readLine()) != null) { // 读入一行,直到文件结束  matcher.reset(line); // 匹配字符串  if (matcher.find()) { // 如果有匹配的字符串,则输出  fal2.add(SourceLib  + "\\"  + line.substring(  line.indexOf('<') + 1,  line.lastIndexOf('>'))  .replace('/', '\\'));  all.add(fal2.getLast().replace(".hpp",  ".cpp"));  line = line.replace(line.substring(line  .indexOf('<'), line  .lastIndexOf('/') + 1), "\"");  line = line.replace('>', '\"');  }  fw.write(line + "\r\n");  }  fw.flush();  fw.close();  br.close(); // 关闭文件  } catch (IOException e) {  e.printStackTrace();  }  }  }  count = all.size();  }  }  }  }    public static void main(String[] args) {  try {  new InlineXercesc("xercesc");  // 将数据写入文件  try {  FileWriter fw = new FileWriter(CurDir + "\\DetailCpp.cmd");  fw.write("copy StdAfx.cpp+*.c+*.cpp " + CurDir  + "\\StdAfx.cpp && del *.c && del *.cpp");  fw.flush();  fw.close();  } catch (IOException e) {  e.printStackTrace();  }  } catch (IOException e) {  }  }  }    80.提取包含头文件列表  import java.io.*;  import java.util.regex.*;  import java.util.*;  public class InlineExt {  private String CurDir = System.getProperty("user.dir");  public InlineExt() {  Pattern pattern = Pattern.compile("include.*?\".*?.hpp\""); // 第一个参数为需要匹配的字符串  Matcher matcher = pattern.matcher("");  File delfile = new File(CurDir);  File[] files2 = delfile.listFiles();  for (int l = 0; l < files2.length; l++) {  if (files2[l].isDirectory()) {  Set<String> ts = new LinkedHashSet<String>();  File file = new File(files2[l].getPath(), "StdAfx.cpp");  BufferedReader br = null;  FileWriter fw = null;  String line;  try {  br = new BufferedReader(new FileReader(file)); // 打开文件  while ((line = br.readLine()) != null) {  matcher.reset(line); // 匹配字符串  if (matcher.find()) { // 如果有匹配的字符串,则输出  ts.add(line.substring(line.indexOf('\"') + 1, line  .lastIndexOf('\"')));  }  }  Iterator<String> it = ts.iterator();  File file2 = new File(files2[l], "ReadMe.txt");  if (file2.exists()) {  fw = new FileWriter(file2);  while (it.hasNext()) {  fw.write("#include \"" + it.next() + "\"\r\n");  }  }  } catch (IOException e) {  // 没有打开文件,则产生异常  System.err.println("Cannot read '" + file + "': "  + e.getMessage());  continue;  } finally {  try {  if (br != null)  br.close();  if (fw != null)  fw.close();  } catch (IOException e) {  e.printStackTrace();  }  }  }  }  }  public static void main(String[] args) {  new InlineExt();  }  }    81.GB2312文件转Unicode格式      82.Java程序打包  /*  import java.io.*;  import java.util.*;  private static String className;  private static File myFilePath;  */  String path=%%1;  ProcessBuilder pb = null;  myFilePath = new File(path, "conf.txt");  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(path);  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory()) {  folderList.add(files[i].getPath());  } else {  if (files[i].getName().substring(2).contains(".")  && files[i].getName().substring(  files[i].getName().lastIndexOf('.'))  .equals(".java")) {    try {  className = files[i].getName().substring(0,  files[i].getName().lastIndexOf('.'));  if (!myFilePath.exists())  myFilePath.createNewFile();  FileWriter resultFile = new FileWriter(myFilePath);  PrintWriter myFile = new PrintWriter(resultFile);  myFile.println("Main-Class:" + className);  myFile.flush();  myFile.close();  resultFile.close();  pb = new ProcessBuilder("javac", files[i]  .getAbsolutePath()  + " && jar cmf "  + myFilePath.getAbsolutePath()  + " "  + className  + ".jar "  + className  + ".class");  pb.start();  } catch (IOException e) {  e.printStackTrace();  }  }  }  }  }  folderList = new LinkedList<String>();  folderList.add(path);  while (folderList.size() > 0) {  File file = new File((String)folderList.poll());  File[] files = file.listFiles();  for (int i = 0; i < files.length; i++) {  if (files[i].isDirectory()) {  folderList.add(files[i].getPath());  } else {  if (files[i].getName().substring(2).contains(".")  && files[i].getName().substring(  files[i].getName().lastIndexOf('.'))  .equals(".class")) {  files[i].delete();  }  }  }  }    83.UTF-8文件转Unicode格式  /**  * utf-8 转换成 unicode  * @author fanhui  * 2007-3-15  * @param inStr  * @return  */  public static String utf8ToUnicode(String inStr) {  char[] myBuffer = inStr.toCharArray();    StringBuffer sb = new StringBuffer();  for (int i = 0; i < inStr.length(); i++) {  UnicodeBlock ub = UnicodeBlock.of(myBuffer[i]);  if(ub == UnicodeBlock.BASIC_LATIN){  //英文及数字等  sb.append(myBuffer[i]);  }else if(ub == UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){  //全角半角字符  int j = (int) myBuffer[i] - 65248;  sb.append((char)j);  }else{  //汉字  short s = (short) myBuffer[i];  String hexS = Integer.toHexString(s);  String unicode = "\\u"+hexS;  sb.append(unicode.toLowerCase());  }  }  return sb.toString();  }    84.创建PDF文档  /*  http://www.lowagie.com/iText/  http://jaist.dl.sourceforge.net/sourceforge/itext/itext-1.4.jar  http://itextdocs.lowagie.com/downloads/iTextAsian.jar  http://itextdocs.lowagie.com/downloads/iTextAsianCmaps.jar  import java.io.*;  import com.lowagie.text.*;  import com.lowagie.text.pdf.PdfWriter;  */  Document document = new Document();  try  {  PdfWriter.getInstance(document, new FileOutputStream(%%1)); //"HelloWorld.pdf"  // 添加PDF文档的一些信息  document.addTitle("Hello World example");  document.addAuthor("Bruno Lowagie");  document.addSubject("This example explains how to add metadata.");  document.addKeywords("iText, Hello World, step 3, metadata");  document.addCreator("My program using iText");  document.open();  // 插入一个段落  document.add(new Paragraph("Hello World!"));    }  catch (DocumentException de)  {  System.err.println(de.getMessage());  }  catch (IOException ioe)  {  System.err.println(ioe.getMessage());  }    // 关闭打开的文档  document.close();    三、中文问题:    由于iText不支持东亚语言,我们下载了iTextAsian.jar 以后,就可以在PDF里面写中文:    /**  * AsianTest.java  */  import java.io.*;  import com.lowagie.text.*;  import com.lowagie.text.pdf.*;  import java.awt.*;    public class AsianTest{    public static void main(String[] args) {    // 创建一个Document对象  Document document = new Document();    try  {    // 生成名为 AsianTest.pdf 的文档  PdfWriter.getInstance(document, new FileOutputStream("AsianTest.pdf"));    /** 新建一个字体,iText的方法  * STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀  * UniGB-UCS2-H 是编码,在iTextAsian.jar 中以cmap为后缀  * H 代表文字版式是 横版, 相应的 V 代表 竖版  */  BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);    Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);    // 打开文档,将要写入内容  document.open();    // 插入一个段落  Paragraph par = new Paragraph("我们",fontChinese);    document.add(par);    }  catch (DocumentException de)  {  System.err.println(de.getMessage());  }  catch (IOException ioe)  {  System.err.println(ioe.getMessage());  }    // 关闭打开的文档  document.close();  }  }    就可以显示中文了。      四、其他问题:(应导入相应的包)    1. 换页:    document.newPage();    2. 表格:    // 设置 Table  Table aTable = new Table(3);  int width[] = {25,25,50};  aTable.setWidths(width);  aTable.setWidth(80); // 占页面宽度 80%    aTable.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);  aTable.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);  aTable.setAutoFillEmptyCells(true); //自动填满  aTable.setPadding(1);  aTable.setSpacing(1);  aTable.setDefaultCellBorder(0);  aTable.setBorder(0);    Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据", fontChinese ));  cell.setVerticalAlignment(Element.ALIGN_TOP);  cell.setRowspan(3);  aTable.addCell(cell);    aTable.addCell(new Cell("#1"));  aTable.addCell(new Cell("#2"));  aTable.addCell(new Cell("#3"));    aTable.addCell(new Cell("#4"));  aTable.addCell(new Cell("#5"));  aTable.addCell(new Cell("#6"));    document.add(aTable);    3. 图片:    // 可以是绝对路径,也可以是URL  Image img = Image.getInstance("logo.gif");    // Image image = Image.getInstance(new URL(http://xxx.com/logo.jpg));    img.setAbsolutePosition(0, 0);    document.add(img);    五、参考文档:    iText  http://www.lowagie.com/iText/    iText API:  http://itext.sourceforge.net/docs/    http://www.sentom.net/list.asp?id=42    85.创建Word文档  /*  import java.awt.*;  import java.io.*;  import com.lowagie.text.*;  import com.lowagie.text.pdf.*;  import com.lowagie.text.rtf.*;  */  public void createDocContext(String file) throws DocumentException,  IOException {  // 设置纸张大小  Document document = new Document(PageSize.A4);  // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中  RtfWriter2.getInstance(document, new FileOutputStream(file));  document.open();  // 设置中文字体  BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",  "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);  // 标题字体风格  Font titleFont = new Font(bfChinese, 12, Font.BOLD);  // 正文字体风格  Font contextFont = new Font(bfChinese, 10, Font.NORMAL);  Paragraph title = new Paragraph("标题");  // 设置标题格式对齐方式  title.setAlignment(Element.ALIGN_CENTER);  title.setFont(titleFont);  document.add(title);    String contextString = "iText是一个能够快速产生PDF文件的java类库。"  + " \n"// 换行  + "iText的java类对于那些要产生包含文本,"  + "表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。"  + "使用iText与PDF能够使你正确的控制Servlet的输出。";  Paragraph context = new Paragraph(contextString);  // 正文格式左对齐  context.setAlignment(Element.ALIGN_LEFT);  context.setFont(contextFont);  // 离上一段落(标题)空的行数  context.setSpacingBefore(5);  // 设置第一行空的列数  context.setFirstLineIndent(20);  document.add(context);    //利用类FontFactory结合Font和Color可以设置各种各样字体样式  /**  * Font.UNDERLINE 下划线,Font.BOLD 粗体  */  Paragraph underline = new Paragraph("下划线的实现", FontFactory.getFont(  FontFactory.HELVETICA_BOLDOBLIQUE, 18, Font.UNDERLINE,  new Color(0, 0, 255)));  document.add(underline);    // 设置 Table 表格  Table aTable = new Table(3);  int width[] = {25,25,50};  aTable.setWidths(width);//设置每列所占比例  aTable.setWidth(90); // 占页面宽度 90%    aTable.setAlignment(Element.ALIGN_CENTER);//居中显示  aTable.setAlignment(Element.ALIGN_MIDDLE);//纵向居中显示  aTable.setAutoFillEmptyCells(true); //自动填满  aTable.setBorderWidth(1); //边框宽度  aTable.setBorderColor(new Color(0, 125, 255)); //边框颜色  aTable.setPadding(2);//衬距,看效果就知道什么意思了  aTable.setSpacing(3);//即单元格之间的间距  aTable.setBorder(2);//边框    //设置表头  /**  * cell.setHeader(true);是将该单元格作为表头信息显示;  * cell.setColspan(3);指定了该单元格占3列;  * 为表格添加表头信息时,要注意的是一旦表头信息添加完了之后,  * 必须调用 endHeaders()方法,否则当表格跨页后,表头信息不会再显示  */  Cell haderCell = new Cell("表格表头");  haderCell.setHeader(true);  haderCell.setColspan(3);  aTable.addCell(haderCell);  aTable.endHeaders();    Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);  Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据", fontChinese ));  cell.setVerticalAlignment(Element.ALIGN_TOP);  cell.setBorderColor(new Color(255, 0, 0));  cell.setRowspan(2);  aTable.addCell(cell);    aTable.addCell(new Cell("#1"));  aTable.addCell(new Cell("#2"));  aTable.addCell(new Cell("#3"));  aTable.addCell(new Cell("#4"));  Cell cell3 = new Cell(new Phrase("一行三列数据", fontChinese ));  cell3.setColspan(3);  cell3.setVerticalAlignment(Element.ALIGN_CENTER);  aTable.addCell(cell3);    document.add(aTable);  document.add(new Paragraph("\n"));  //添加图片  Image img=Image.getInstance("d:\\img01800.jpg");  img.setAbsolutePosition(0, 0);  img.setAlignment(Image.RIGHT);//设置图片显示位置  img.scaleAbsolute(12,35);//直接设定显示尺寸  img.scalePercent(50);//表示显示的大小为原尺寸的50%  img.scalePercent(25, 12);//图像高宽的显示比例  img.setRotation(30);//图像旋转一定角度  document.add(img);    document.close();  }    /**  * @param args  */  public static void main(String[] args) {  CreateWordDemo word = new CreateWordDemo();  String file = "c:/demo1.doc";  try {  word.createDocContext(file);  } catch (DocumentException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }    /* 内部线程类 */  class Son extends Thread  {  private ICallBack event;  public Son(ICallBack callback)  {  event=callback;  }  public void run()  {  try  {  java.text.SimpleDateFormat fmt=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  while(true)  {  Thread.currentThread().sleep(3000);  event.output(fmt.format(new java.util.Date()));  Thread.currentThread().sleep(3000);  }  }  catch (Exception e)  {  }  }  }    /* 回调接口 */  interface ICallBack  {  public void output();  }    86.快速高效的文件加密  /*  import java.util.*;  import java.io.*;  import javax.swing.*;  */  private static final String CharSet = "0123456789ABCDEF";  private static final int a[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };  private static final int b[] = { 3, 3, 3, 5, 5, 3, 3, 3, 5, 3, 5, 3, 7, 3,  11, 7, 11, 3, 5, 3, 3, 3, 7, 5, 5, 3, 7, 3, 11, 13, 3 };  private static final int c[] = { 3, 5, 7, 5, 7, 11, 13, 19, 17, 29, 19, 31,  17, 41, 11, 19, 13, 47, 29, 53, 59, 67, 29, 41, 43, 71, 31, 73, 23,  23, 101 };  private static final int d[] = { 5, 7, 11, 13, 17, 17, 19, 29, 43, 43, 47,  47, 59, 61, 61, 67, 71, 71, 73, 79, 89, 101, 101, 103, 107, 107,  109, 109, 127, 149, 151 };  private static int ka, kb, kc, kd;    private static void init() {  Date t1 = new Date();  Date t2 = new Date(79, 8, 23, 8, 30, 0); // "9-23-1979 8:30"  int GetDays = 0;  int result = 0;  Calendar start = new GregorianCalendar();  Calendar end = new GregorianCalendar();  start.setTime(t2);  end.setTime(t1);  Calendar startCalendar = start;  int startYear = start.get(Calendar.YEAR);  int startMonth = start.get(Calendar.MONTH);  int startDayOfM = start.get(Calendar.DAY_OF_MONTH);  int startDayOfY = start.get(Calendar.DAY_OF_YEAR);    Calendar endCalendar = end;  int endYear = end.get(Calendar.YEAR);  int endMonth = end.get(Calendar.MONTH);  int endDayOfM = end.get(Calendar.DAY_OF_MONTH);  int endDayOfY = end.get(Calendar.DAY_OF_YEAR);  int startLastYear = 0, startLastDayOfY = 0;  if (endYear == startYear) {  startLastYear = endDayOfY < startDayOfY ? startYear : endYear;  startLastDayOfY = endDayOfY < startDayOfY ? startDayOfY : endDayOfY;  } else if (endYear < startYear) {  startLastYear = startYear;  startLastDayOfY = startDayOfY;  } else {  startLastYear = endYear;  startLastDayOfY = endDayOfY;  }    if ((endYear == startYear && endDayOfY == startDayOfY)  || (startLastYear == startYear && startLastDayOfY == startDayOfY)) {  GetDays = result;  } else if (startYear == endYear) {  GetDays = endDayOfY - startDayOfY;  } else {  Calendar tmp = Calendar.getInstance();  result = startCalendar.getActualMaximum(Calendar.DAY_OF_YEAR)  - startDayOfY;  for (int i = startYear + 1; i < endYear; i++) {  tmp.set(i, tmp.get(Calendar.MONTH), tmp  .get(Calendar.DAY_OF_MONTH));  result += tmp.getActualMaximum(Calendar.DAY_OF_YEAR);  }  result += end.get(Calendar.DAY_OF_YEAR);  GetDays = result;  }  Random rand = new Random(GetDays * 8 - 55);  int r = rand.nextInt(GetDaysInMoths(t2.getMonth() + 1));  r=0;  ka = a[r];  kb = b[r];  kc = c[r];  kd = d[r];  }    private static int GetDaysInMoths(int nMoths) {  switch (nMoths) {  case 2: {  int nYear = new Date().getYear() + 1900;  if ((nYear % 4 == 0) && (nYear % 400) != 0) {  return 29;  } else {  return 28;  }  }  case 1:  case 3:  case 5:  case 7:  case 8:  case 10:  case 12:  return 31;  case 4:  case 6:  case 9:  case 11:  return 30;  default:  return -1;  }  }    private static int niyuan(int m, int n) {  int a, b, c, d, t, yu = 0, shang, mod;  a = m;  b = n;  mod = a;  c = 0;  d = 1;  while (b < 0)  b += a;  if (a % b == 0 || b % 2 == 0)  return 0;  while (b != 1) {  t = a % b;  shang = a / b;  a = b;  b = t;  yu = c - shang * d;  c = d;  d = yu;  }  if (yu < 0)  yu += mod;  return yu;  }  JFileChooser chooser = new JFileChooser();  chooser.setCurrentDirectory(new File("E:"));  chooser  .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {  public boolean accept(File f) {  return f.getName().toLowerCase().endsWith(".zip")  || f.isDirectory();  }    public String getDescription() {  return "Compress Files(*.zip)";  }  });  chooser  .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {  public boolean accept(File f) {  return f.getName().toLowerCase().endsWith(".txt")  || f.isDirectory();  }    public String getDescription() {  return "Text Files(*.txt)";  }  });  chooser  .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {  public boolean accept(File f) {  return f.getName().toLowerCase().endsWith(".exe")  || f.isDirectory();  }    public String getDescription() {  return "Executeable Files(*.exe)";  }  });  if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {  String name = chooser.getSelectedFile().getPath();  JFileChooser chooser2 = new JFileChooser();  chooser2.setCurrentDirectory(new File("E:"));  if (name.substring(name.lastIndexOf('.')).equals(".txt")) {  char[] sRead = new char[10240];  char[] hexstr = new char[10240];  char[] pbuf = new char[20480];  char[] rRead = new char[20480];  char[] out2 = new char[10240];  chooser2  .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {  public boolean accept(File f) {  return f.getName().toLowerCase().endsWith(  ".zip")  || f.isDirectory();  }    public String getDescription() {  return "Compress Files(*.zip)";  }  });  chooser2  .addChoosableFileFilter(new javax.swing.filechooser.FileFilter() {  public boolean accept(File f) {  return f.getName().toLowerCase().endsWith(  ".exe")  || f.isDirectory();  }    public String getDescription() {  return "Executeable Files(*.exe)";  }  });  if (chooser2.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {  init();  FileOutputStream fw = null;  try {  FileInputStream fis = new FileInputStream(chooser  .getSelectedFile());  fw = new FileOutputStream(chooser2.getSelectedFile());  byte[] buffer = new byte[20480];  int js = 0, tmp;  int aany, ddny;  int r00 = ka * kc * kd;  int r01 = -ka * kb * kc;  int r10 = -kb * kc * kc;  int r11 = ka * kb * kc;  int x00 = ka * ka * kc * kd - ka * kb * kc * kc;  int x11 = ka * kb * kc * kd - kb * kb * kc * kc;  while (x00 % 2 == 0) {  x00 /= 2;  r00 /= 2;  r01 /= 2;  }  while (x11 % 2 == 0) {  x11 /= 2;  r10 /= 2;  r11 /= 2;  }  aany = x00;  ddny = x11;  if (niyuan(1024, aany) != 0 && niyuan(1024, ddny) != 0) {  int kn00 = r00 * niyuan(1024, x00);  int kn01 = r01 * niyuan(1024, x00);  int kn10 = r10 * niyuan(1024, x11);  int kn11 = r11 * niyuan(1024, x11);  ka = kn00;  kb = kn01;  kc = kn10;  kd = kn11;  } else {  JOptionPane.showMessageDialog(null, "无逆矩阵!");  System.exit(0);  }  while (ka < 0)  ka += 1024;  while (kb < 0)  kb += 1024;  while (kc < 0)  kc += 1024;  while (kd < 0)  kd += 1024;  ka %= 1024;  kb %= 1024;  kc %= 1024;  kd %= 1024;  try {  int byteread;  while ((byteread = fis.read(buffer)) != -1) {  int nLen = byteread / 2;  byte[] sming = new byte[nLen];  String chs = new String(buffer, "US-ASCII");  for (int i = 0; i < nLen; i++) {  byte bTmp;  if (byteread < 2)  bTmp = -1;  bTmp = (byte) (CharSet.indexOf(chs  .substring(i * 2, i * 2 + 1)) * 16 + CharSet  .indexOf(chs.substring(i * 2 + 1,  i * 2 + 2)));  sming[i] = bTmp;  }  if (nLen % 2 != 0)  js = 1;  for (int i = 0; i < nLen - 1; i += 2) {  char c1 = (char) sming[i];  char c2 = (char) sming[i + 1];  tmp = ka * c1 + kc * c2;  while (tmp < 0)  tmp += 1024;  char s1 = (char) (tmp % 1024);  fw.write(s1);  tmp = kb * c1 + kd * c2;  while (tmp < 0)  tmp += 1024;  char s2 = (char) (tmp % 1024);  fw.write(s2);  }  if (js == 1) {  char c3 = (char) ((sming[nLen - 1] - 4) % 1024);  fw.write(c3);  }  }  fw.flush();  } catch (IOException e) {  e.printStackTrace();  } finally {  try {  fis.close();  fw.close();  } catch (IOException e) {  e.printStackTrace();  }  }  } catch (FileNotFoundException e1) {  e1.printStackTrace();  }  if(!chooser2.getFileFilter().accept(chooser2.getSelectedFile())){  if(chooser2.getFileFilter().getDescription().equals("Compress Files(*.zip)"))  chooser2.getSelectedFile().renameTo(new File(chooser2.getSelectedFile().getAbsolutePath()+".zip"));  else if(chooser2.getFileFilter().getDescription().equals("Executeable Files(*.exe)"))  chooser2.getSelectedFile().renameTo(new File(chooser2.getSelectedFile().getAbsolutePath()+".exe"));  }    }  } else {  chooser2  .setFileFilter(new javax.swing.filechooser.FileFilter() {  public boolean accept(File f) {  return f.getName().toLowerCase().endsWith(  ".txt")  || f.isDirectory();  }    public String getDescription() {  return "Text Files";  }  });  if (chooser2.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {    if (chooser2.getSelectedFile() != null) {  init();  File oldfile = chooser.getSelectedFile();  FileInputStream inStream = null;  FileWriter fw = null;  try {  if (oldfile.exists()) {  inStream = new FileInputStream(oldfile);  fw = new FileWriter(chooser2.getSelectedFile());  byte[] sRead = new byte[10240];  int byteread;  while ((byteread = inStream.read(sRead)) != -1) {  StringBuilder smi = new StringBuilder(  byteread * 2);  int js = 0;  if (byteread % 2 != 0)  js = 1;  for (int i = 0; i < byteread - 1; i += 2) {  char c1 = (char) sRead[i];  char c2 = (char) sRead[i + 1];  int tmp = ka * c1 + kc * c2;  while (tmp < 0)  tmp += 1024;  byte s1 = (byte) (tmp % 1024);  int js1 = (int) s1 >> 4 & 0xf;  smi.append(CharSet.substring(js1,  js1 + 1));  int ks1 = s1 & 0xf;  smi.append(CharSet.substring(ks1,  ks1 + 1));  tmp = kb * c1 + kd * c2;  while (tmp < 0)  tmp += 1024;  byte s2 = (byte) (tmp % 1024);  int js2 = (int) s2 >> 4 & 0xf;  smi.append(CharSet.substring(js2,  js2 + 1));  int ks2 = s2 & 0xf;  smi.append(CharSet.substring(ks2,  ks2 + 1));  }  if (js == 1) {  byte s3 = (byte) ((sRead[byteread - 1] - 4) % 1024);  int js3 = (int) s3 >> 4 & 0xf;  smi.append(CharSet.substring(js3,  js3 + 1));  int ks3 = (int) s3 & 0xf;  smi.append(CharSet.substring(ks3,  ks3 + 1));  }  fw.write(smi.toString());  }  fw.flush();  }  } catch (IOException e) {  e.printStackTrace();  } finally {  try {  fw.close();  inStream.close();  } catch (IOException e) {  e.printStackTrace();  }  }  if(!chooser2.getFileFilter().accept(chooser2.getSelectedFile()))  chooser2.getSelectedFile().renameTo(new File(chooser2.getSelectedFile().getAbsolutePath()+".txt"));  }  }  }  }    87.菜单勾选/取消开机自启动程序    88.菜单勾选/取消自动登录系统    89.模拟键盘输入字符串  /*  import java.awt.*;  import java.awt.event.*;  throws Exception{  */  static Robot robot;  static{  try {  robot = new Robot();  } catch (AWTException e) {}  }    static void sendKey(String ks){  KeyStore k = KeyStore.findKeyStore(ks);  if(k!=null){  if(k.upCase)  upCase(k.v);  else  sendKey(k.v);  }  else{  for(int i=0; i<ks.length(); i++){  char c = ks.charAt(i);  if(c>='0'&&c<='9'){  sendKey(c);  }  else if(c>='a'&&c<='z'){  sendKey(c-32);  }  else if(c>='A'&&c<='Z'){  upCase(c);  }  }  }  }  private static void upCase(int kc){  robot.keyPress(KeyEvent.VK_SHIFT);  robot.keyPress(kc);  robot.keyRelease(kc);  robot.keyRelease(KeyEvent.VK_SHIFT);  }  private static void sendKey(int kc){  robot.keyPress(kc);  robot.keyRelease(kc);  }  static class KeyStore{  //special keys  final static KeyStore[] sp = {  new KeyStore("{Tab}",KeyEvent.VK_TAB),//tab  new KeyStore("{Enter}",KeyEvent.VK_ENTER),//enter  new KeyStore("{PUp}",KeyEvent.VK_PAGE_UP),//page up  new KeyStore("{<}",KeyEvent.VK_LESS),//<  new KeyStore("{Up}",KeyEvent.VK_UP),//up key  new KeyStore("{At}",KeyEvent.VK_AT,true),//@  new KeyStore("{Dollar}",KeyEvent.VK_DOLLAR,true),//$  };    String k;  int v;  boolean upCase;  KeyStore(String k,int v){  this(k,v,false);  }    KeyStore(String s,int i,boolean up){  k=s;  v=i;  upCase=up;  }  static KeyStore findKeyStore(String k){  for(int i=0; i<sp.length; i++){  if(sp[i].k.equals(k))  return sp[i];  }  return null;  }  }  Thread.sleep(1000);  sendKey("{Tab}");//tab  sendKey("{<}");//<  sendKey("abcd123AHahahAA");//abcd123AHahahAA  sendKey("{At}");//@  sendKey("{Dollar}");//$  sendKey("{Up}");//up arrow    90.提取PDF文件中的文本  //http://incubator.apache.org/pdfbox/  /*  import java.io.*;  import org.pdfbox.pdfparser.*;  import org.pdfbox.pdmodel.*;  import org.pdfbox.util.*;  */  public class SimplePDFReader {  /**  * simply reader all the text from a pdf file.  * You have to deal with the format of the output text by yourself.  * 2008-2-25  * @param pdfFilePath file path  * @return all text in the pdf file  */  public static String getTextFromPDF(String pdfFilePath) {  String result = null;  FileInputStream is = null;  PDDocument document = null;  try {  is = new FileInputStream(pdfFilePath);  PDFParser parser = new PDFParser(is);  parser.parse();  document = parser.getPDDocument();  PDFTextStripper stripper = new PDFTextStripper();  result = stripper.getText(document);  } catch (FileNotFoundException e) {  // TODO Auto-generated catch block  e.printStackTrace();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  } finally {  if (is != null) {  try {  is.close();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  }  if (document != null) {  try {  document.close();  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  }  }  return result;  }  }  得到PDF的文本内容之后,自己根据文件的格式,取得想要的文本(这里我找的就是文章的标题,在文本中恰巧都是文件的第一行的内容),然后通过java的File相关api,对文件进行更名操作。  import java.io.File;  import java.io.FilenameFilter;    public class PaperNameMender {  public static void changePaperName(String filePath) {  //使用SimplePDFReader得到pdf文本  String ts = SimplePDFReader.getTextFromPDF(filePath);  //取得一行内容  String result = ts.substring(0, ts.indexOf('\n'));  //得到源文件名中的最后一个逗点.的位置  int index = filePath.indexOf('.');  int nextIndex = filePath.indexOf('.', index + 1);  while(nextIndex != -1) {  index = nextIndex;  nextIndex = filePath.indexOf('.', index + 1);  }  //合成新文件名  String newFilename = filePath.substring(0, index) + " " +  result.trim() + ".pdf";  File originalFile = new File(filePath);  //修改文件名  originalFile.renameTo(new File(newFilename));  }  }      91.操作内存映射文件  /*  import java.io.*;  import java.nio.*;  import java.nio.channels.*;  */  private static int length = 0x8FFFFFF; // 128 Mb  MappedByteBuffer out =  new RandomAccessFile("test.dat", "rw").getChannel()  .map(FileChannel.MapMode.READ_WRITE, 0, length);  for(int i = 0; i < length; i++)  out.put((byte)'x');  for(int i = length/2; i < length/2 + 6; i++)  //(char)out.get(i);    92.重定向windows控制台程序的输出信息  92.1 取得Runtime.getRuntime().exec("cmd /c dir")的输入输出  //import java.io.*;  try {  String command = "cmd /c dir";  Process proc = Runtime.getRuntime().exec(command);  InputStreamReader ir = new InputStreamReader(proc.getInputStream());  LineNumberReader lnr = new LineNumberReader(ir);  String line;  while( (line = lnr.readLine()) != null)  {  //line  }  } catch (IOException e) {  e.printStackTrace();  }    92.2 利用ProcessBuilder来创建Process对象,执行外部可执行程序  // //Eg1:  // String address = null;  //  // String os = System.getProperty("os.name");  // System.out.println(os);  //  // if (os != null) {  // if (os.startsWith("Windows")) {  // try {  // ProcessBuilder pb = new ProcessBuilder("ipconfig", "/all");  // Process p = pb.start();  //  // BufferedReader br = new BufferedReader(  // new InputStreamReader(p.getInputStream()));  //  // String line;  // while ((line = br.readLine()) != null) {  // if (line.indexOf("Physical Address") != -1) {  // int index = line.indexOf(":");  // address = line.substring(index + 1);  // break;  // }  // }  // br.close();  // address = address.trim();  // } catch (IOException e) {  // // TODO Auto-generated catch block  // e.printStackTrace();  // }  // } else if (os.startsWith("Linux")) {  // try {  // ProcessBuilder pb = new ProcessBuilder(  //  // "ifconfig", "/all");  //  // Process p = pb.start();  // BufferedReader br = new BufferedReader(  // new InputStreamReader(p.getInputStream()));  // String line;  // while ((line = br.readLine()) != null) {  // int index = line.indexOf("硬件地址");  // if (index != -1) {  // address = line.substring(index + 4);  // break;  // }  // }  // br.close();  // address = address.trim();  // } catch (IOException e) {  // e.printStackTrace();  // }  // }  // }    // //Eg2:  // try {  // Process proc;  // proc = Runtime.getRuntime().exec("cmd.exe");  // BufferedReader read = new BufferedReader(new InputStreamReader(proc  // .getInputStream()));  // new Thread(new Echo(read)).start();  //  // PrintWriter out = new PrintWriter(new OutputStreamWriter(proc  // .getOutputStream()));  // BufferedReader in = new BufferedReader(new InputStreamReader(  // System.in));  // String instr = in.readLine();  // while (!"exit".equals(instr)) {  // instr = in.readLine();  // out.println(instr);  // out.flush();  // }  //  // in.readLine();  // read.close();  // out.close();  // } catch (IOException e) {  // // TODO Auto-generated catch block  // e.printStackTrace();  // }    }  }    class Echo implements Runnable {  private BufferedReader read;    public Echo(BufferedReader read) {  read = read;  }    public void run() {  try {  String line = read.readLine();  while (line != null) {  //line  line = read.readLine();  }  } catch (IOException ex) {  ex.printStackTrace();  }  }  }    93.序列化  //import java.io.*;  class tree implements Serializable{  public tree left;  public tree right;  public int id;  public int level;    private static int count = 0 ;    public tree( int depth) {  id = count ++ ;  level = depth;  if (depth > 0 ) {  left = new tree(depth - 1 );  right = new tree(depth - 1 );  }  }    public void print( int levels) {  for ( int i = 0 ; i < level; i ++ )  System.out.print( " " );  System.out.println( " node " + id);    if (level <= levels && left != null )  left.print(levels);    if (level <= levels && right != null )  right.print(levels);  }  }  try {  /**/ /* 创建一个文件写入序列化树。 */  FileOutputStream ostream = new FileOutputStream(%%1);  /**/ /* 创建输出流 */  ObjectOutputStream p = new ObjectOutputStream(ostream);    /**/ /* 创建一个二层的树。 */  tree base = new tree( 2 );    p.writeObject(base); // 将树写入流中。  p.writeObject( " LiLy is 惠止南国 " );  p.flush();  ostream.close(); // 关闭文件。  } catch (Exception ex) {  ex.printStackTrace();  }  }    94.反序列化  //import java.io.*;  class tree implements Serializable{  public tree left;  public tree right;  public int id;  public int level;    private static int count = 0 ;    public tree( int depth) {  id = count ++ ;  level = depth;  if (depth > 0 ) {  left = new tree(depth - 1 );  right = new tree(depth - 1 );  }  }    public void print( int levels) {  for ( int i = 0 ; i < level; i ++ )  System.out.print( " " );  System.out.println( " node " + id);    if (level <= levels && left != null )  left.print(levels);    if (level <= levels && right != null )  right.print(levels);  }  }  try {  FileInputStream istream = new FileInputStream(%%1);  ObjectInputStream q = new ObjectInputStream(istream);    /**/ /* 读取树对象,以及所有子树 */  tree new_tree = (tree)q.readObject();    new_tree.print( 2 ); // 打印出树形结构的最上面 2级  String name = (String)q.readObject();  System.out.println( " \n " + name);  } catch (Exception ex) {  ex.printStackTrace();  }  }    95.报表相关  //http://www.jfree.org/jfreechart/  /*  import java.io.*;  import java.awt.*;  import org.jfree.chart.*;  import org.jfree.chart.title.TextTitle;  import org.jfree.data.general.*;  */  String title = "梦泽科技员工学历情况统计";  DefaultPieDataset piedata = new DefaultPieDataset();  piedata.setValue("大专", 8.1);  piedata.setValue("大学", 27.6);  piedata.setValue("硕士", 53.2);  piedata.setValue("博士及以上", 19.2);  piedata.setValue("大专以下", 1.9);  JFreeChart chart = ChartFactory.createPieChart(title, piedata, true, true, true);  chart.setTitle(new TextTitle(title, new Font("宋体", Font.BOLD, 25)));  chart.addSubtitle(new TextTitle("最后更新日期:2005年5月19日", new Font("楷书", Font.ITALIC, 18)));  chart.setBackgroundPaint(Color.white);  try {  ChartUtilities.saveChartAsJPEG(new File("PieChart.jpg"), chart, 360, 300);  } catch (IOException exz) {  System.err.print("....Cant′t Create image File");  }    96.全屏幕截取  /*  import java.awt.*;  import java.awt.image.*;  import java.io.*;  import javax.imageio.*;  */  try{  Dimension d = Toolkit.getDefaultToolkit().getScreenSize();  BufferedImage screenshot = (new Robot())  .createScreenCapture(new Rectangle(0, 0,  (int) d.getWidth(), (int) d.getHeight()));  // 根据文件前缀变量和文件格式变量,自动生成文件名  String name = %%1 + "."  + %%2; //"png"  File f = new File(name);  ImageIO.write(screenshot, %%2, f);  } catch (Exception ex) {  ex.printStackTrace();  }    97.区域截屏  /*  import java.awt.*;  import java.awt.image.*;  import java.io.*;  import java.util.*;  import javax.imageio.*;  */  interface ImageType {  public final static String JPG = "JPG";  public final static String PNG = "PNG";  public final static String GIF = "GIF";  }  public class ScreenDumpHelper {  /** ScreenDumpHelper 静态对象 */  private static ScreenDumpHelper defaultScreenDumpHelper;  public static ScreenDumpHelper getDefaultScreenDumpHelper() {  if (defaultScreenDumpHelper == null)  return new ScreenDumpHelper();  return defaultScreenDumpHelper;  }  public ScreenDumpHelper() {  Dimension dime = Toolkit.getDefaultToolkit().getScreenSize();  setScreenArea(new Rectangle(dime));  }  private Rectangle screenArea;    public Rectangle getScreenArea() {  return screenArea;  }    public void setScreenArea(Rectangle screenArea) {  screenArea = screenArea;  }    public void setScreenArea(int x, int y, int width, int height) {  screenArea = new Rectangle(x, y, width, height);  }  private BufferedImage getBufferedImage() throws AWTException {  BufferedImage imgBuf = null;  ;  imgBuf = (new Robot()).createScreenCapture(getScreenArea());  return imgBuf;  }    /**  * 将 图像数据写到 输出流中去,方便再处理  *  * @param fileFormat  * @param output  * @return  */  public boolean saveToOutputStream(String fileFormat, OutputStream output) {  try {  ImageIO.write(getBufferedImage(), fileFormat, output);  } catch (AWTException e) {  return false;  // e.printStackTrace();  } catch (IOException e) {  return false;  // e.printStackTrace();  }  return true;  }    /**  * 根据文件格式 返回随机文件名称  *  * @param fileFormat  * @return  */  public String getRandomFileName(String fileFormat) {  return "screenDump_" + (new Date()).getTime() + "." + fileFormat;  }    /**  * 抓取 指定区域的截图 到指定格式的文件中 -- 这个函数是核心,所有的都是围绕它来展开的 * 图片的编码并不是以后缀名来判断: 比如s.jpg  * 如果其采用png编码,那么这个图片就是png格式的  *  * @param fileName  * @param fileFormat  * @return boolean  */  public boolean saveToFile(String fileName, String fileFormat) {  if (fileName == null)  fileName = getRandomFileName(fileFormat);  try {  FileOutputStream fos = new FileOutputStream(fileName);  saveToOutputStream(fileFormat, fos);  } catch (FileNotFoundException e) {  System.err.println("非常规文件或不能创建抑或覆盖此文件: " + fileName);  }  return true;  }    /**  * 抓取 指定 Rectangle 区域的截图 到指定格式的文件中  *  * @param fileName  * @param fileFormat  * @param screenArea  * @return  */  public boolean saveToFile(String fileName, String fileFormat,  Rectangle screenArea) {  setScreenArea(screenArea);  return saveToFile(fileName, fileFormat);  }    /**  * 抓取 指定区域的截图 到指定格式的文件中  *  * @param fileName  * @param fileFormat  * @param x  * @param y  * @param width  * @param height  */  public boolean saveToFile(String fileName, String fileFormat, int x, int y,  int width, int height) {  setScreenArea(x, y, width, height);  return saveToFile(fileName, fileFormat);  }    /**  * 将截图使用 JPG 编码  *  * @param fileName  */  public void saveToJPG(String fileName) {  saveToFile(fileName, ImageType.JPG);  }    public void saveToJPG(String fileName, Rectangle screenArea) {  saveToFile(fileName, ImageType.JPG, screenArea);  }    public void saveToJPG(String fileName, int x, int y, int width, int height) {  saveToFile(fileName, ImageType.JPG, x, y, width, height);  }    /**  * 将截图使用 PNG 编码  *  * @param fileName  */  public void saveToPNG(String fileName) {  saveToFile(fileName, ImageType.PNG);  }    public void saveToPNG(String fileName, Rectangle screenArea) {  saveToFile(fileName, ImageType.PNG, screenArea);  }    public void saveToPNG(String fileName, int x, int y, int width, int height) {  saveToFile(fileName, ImageType.PNG, x, y, width, height);  }    public void saveToGIF(String fileName) {  throw new UnsupportedOperationException("不支持保存到GIF文件");  // saveToFile(fileName, ImageType.GIF);  }    /**  * @param args  */  public static void main(String[] args) {  for (int i = 0; i < 5; i++)  ScreenDumpHelper.getDefaultScreenDumpHelper().saveToJPG(null,  i * 150, i * 150, 400, 300);  }  }    98.计算文件MD5值  /*  import java.io.*;  import java.math.*;  import java.security.*;  import java.util.*;  */  File file=new File(%%1);  if (!file.isFile()){  return null;  }  MessageDigest digest = null;  FileInputStream in=null;  byte buffer[] = new byte[1024];  int len;  try {  digest = MessageDigest.getInstance("MD5");  in = new FileInputStream(file);  while ((len = in.read(buffer, 0, 1024)) != -1) {  digest.update(buffer, 0, len);  }  in.close();  } catch (Exception e) {  e.printStackTrace();  return null;  }  BigInteger bigInt = new BigInteger(1, digest.digest());  return bigInt.toString(16);  }    99.计算获取文件夹中文件的MD5值  /*  import java.io.*;  import java.math.*;  import java.security.*;  import java.util.*;  */  public static String getFileMD5(File file) {  if (!file.isFile()){  return null;  }  MessageDigest digest = null;  FileInputStream in=null;  byte buffer[] = new byte[1024];  int len;  try {  digest = MessageDigest.getInstance("MD5");  in = new FileInputStream(file);  while ((len = in.read(buffer, 0, 1024)) != -1) {  digest.update(buffer, 0, len);  }  in.close();  } catch (Exception e) {  e.printStackTrace();  return null;  }  BigInteger bigInt = new BigInteger(1, digest.digest());  return bigInt.toString(16);  }  /**  * 获取文件夹中文件的MD5值  * @param file  * @param listChild ;true递归子目录中的文件  * @return  */  public static Map<String, String> getDirMD5(File file,boolean listChild) {  if(!file.isDirectory()){  return null;  }  //<filepath,md5>  Map<String, String> map=new HashMap<String, String>();  String md5;  File files[]=file.listFiles();  for(int i=0;i<files.length;i++){  File f=files[i];  if(f.isDirectory()&&listChild){  map.putAll(getDirMD5(f, listChild));  } else {  md5=getFileMD5(f);  if(md5!=null){  map.put(f.getPath(), md5);  }  }  }  return map;  }  getDirMD5(%%1,%%2);    100.复制一个目录下所有文件到一个文件夹中  /*  import java.io.*;  import java.util.*;  */  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(%%1);  LinkedList<String> folderList2 = new LinkedList<String>();  folderList2.add(%%2+ %%1.substring(%%1.lastIndexOf("\\")));  while (folderList.size() > 0) {  File folders = new File(folderList.peek());  String[] file = folders.list();  File temp = null;  try {  for (int i = 0; i < file.length; i++) {  if (folderList.peek().endsWith(File.separator)) {  temp = new File(folderList.peek() + File.separator  + file[i]);  } else {  temp = new File(folderList.peek() + File.separator  + file[i]);  }  if (temp.isFile()) {  FileInputStream input = new FileInputStream(temp);  FileOutputStream output = new FileOutputStream(  new File(%%2,temp.getName()));  byte[] b = new byte[10240];  int len;  while ((len = input.read(b)) != -1) {  output.write(b, 0, len);  }  output.flush();  output.close();  input.close();  }  if (temp.isDirectory()) {// 如果是子文件夹  for (File f : temp.listFiles()) {  if (f.isDirectory()) {  folderList.add(f.getPath());  folderList2.add(folderList2.peek()  + File.separator + f.getName());  }  }  }  }  } catch (IOException e) {  System.err.println("复制整个文件夹内容操作出错");  }  folderList.removeFirst();  folderList2.removeFirst();  }    101.移动一个目录下所有文件到一个文件夹中  /*  import java.io.*;  import java.util.*;  */  LinkedList<String> folderList = new LinkedList<String>();  folderList.add(%%1);  LinkedList<String> folderList2 = new LinkedList<String>();  folderList2.add(%%2 + %%1.substring(%%1.lastIndexOf("\\")));  while (folderList.size() > 0) {  File folders = new File(folderList.peek());  String[] file = folders.list();  File temp = null;  try {  for (int i = 0; i < file.length; i++) {  if (folderList.peek().endsWith(File.separator)) {  temp = new File(folderList.peek() + File.separator  + file[i]);  } else {  temp = new File(folderList.peek() + File.separator  + file[i]);  }  if (temp.isFile()) {  FileInputStream input = new FileInputStream(temp);  FileOutputStream output = new FileOutputStream(  new File(%%2,temp.getName()));  byte[] b = new byte[10240];  int len;  while ((len = input.read(b)) != -1) {  output.write(b, 0, len);  }  output.flush();  output.close();  input.close();  if (!temp.delete())  //删除单个文件操作出错  }  if (temp.isDirectory()) {// 如果是子文件夹  for (File f : temp.listFiles()) {  if (f.isDirectory()) {  folderList.add(f.getPath());  folderList2.add(folderList2.peek()  + File.separator + f.getName());  }  }  }  }  } catch (Exception e) {  //复制整个文件夹内容操作出错  e.printStackTrace();  }  folderList.removeFirst();  folderList2.removeFirst();  }  File f = new File(%%1);  if (!f.delete()) {  for (File file : f.listFiles()) {  if (file.list().length == 0) {  file.delete();  }  }  }    102.文件RSA高级加密  /*  import javax.crypto.*;  import java.security.*;  import java.security.spec.*;  import java.security.interfaces.*;  import java.io.*;  import java.math.BigInteger;  */  /**    * 生成密钥对    * @return KeyPair    * @throws EncryptException    */    public static KeyPair generateKeyPair() throws EncryptException {    try {    KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",    new org.bouncycastle.jce.provider.BouncyCastleProvider());    final int KEY_SIZE = 1024;//没什么好说的了,这个值关系到块加密的大小,可以更改,但是不要太大,否则效率会低    keyPairGen.initialize(KEY_SIZE, new SecureRandom());    KeyPair keyPair = keyPairGen.genKeyPair();    return keyPair;    } catch (Exception e) {    throw new EncryptException(e.getMessage());    }    }    /**    * 生成公钥    * @param modulus    * @param publicExponent    * @return RSAPublicKey    * @throws EncryptException    */    public static RSAPublicKey generateRSAPublicKey(byte[] modulus, byte[] publicExponent) throws EncryptException {    KeyFactory keyFac = null;    try {    keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());    } catch (NoSuchAlgorithmException ex) {    throw new EncryptException(ex.getMessage());    }    RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(modulus), new BigInteger(publicExponent));    try {    return (RSAPublicKey) keyFac.generatePublic(pubKeySpec);    } catch (InvalidKeySpecException ex) {    throw new EncryptException(ex.getMessage());    }    }  /**    * 生成私钥    * @param modulus    * @param privateExponent    * @return RSAPrivateKey    * @throws EncryptException    */    public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus, byte[] privateExponent) throws EncryptException {    KeyFactory keyFac = null;    try {    keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());    } catch (NoSuchAlgorithmException ex) {    throw new EncryptException(ex.getMessage());    }    RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(modulus), new BigInteger(privateExponent));    try {    return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);    } catch (InvalidKeySpecException ex) {    throw new EncryptException(ex.getMessage());    }    }    /**    * 加密    * @param key 加密的密钥    * @param data 待加密的明文数据    * @return 加密后的数据    * @throws EncryptException    */    public static byte[] encrypt(Key key, byte[] data) throws EncryptException {    try {    Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());    cipher.init(Cipher.ENCRYPT_MODE, key);    int blockSize = cipher.getBlockSize();//获得加密块大小,如:加密前数据为128个byte,而key_size=1024 加密块大小为127 byte,加密后为128个byte;因此共有2个加密块,第一个127 byte第二个为1个byte    int outputSize = cipher.getOutputSize(data.length);//获得加密块加密后块大小    int leavedSize = data.length % blockSize;    int blocksSize = leavedSize != 0 ? data.length / blockSize + 1 : data.length / blockSize;    byte[] raw = new byte[outputSize * blocksSize];    int i = 0;    while (data.length - i * blockSize > 0) {    if (data.length - i * blockSize > blockSize)    cipher.doFinal(data, i * blockSize, blockSize, raw, i * outputSize);    else    cipher.doFinal(data, i * blockSize, data.length - i * blockSize, raw, i * outputSize);  //这里面doUpdate方法不可用,查看源代码后发现每次doUpdate后并没有什么实际动作除了把byte[]放到ByteArrayOutputStream中,而最后doFinal的时候才将所有的byte[]进行加密,可是到了此时加密块大小很可能已经超出了OutputSize所以只好用dofinal方法。    i++;    }    return raw;    } catch (Exception e) {    throw new EncryptException(e.getMessage());    }    }    /**    * 解密    * @param key 解密的密钥    * @param raw 已经加密的数据    * @return 解密后的明文    * @throws EncryptException    */    public static byte[] decrypt(Key key, byte[] raw) throws EncryptException {    try {    Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());    cipher.init(cipher.DECRYPT_MODE, key);    int blockSize = cipher.getBlockSize();    ByteArrayOutputStream bout = new ByteArrayOutputStream(64);    int j = 0;    while (raw.length - j * blockSize > 0) {    bout.write(cipher.doFinal(raw, j * blockSize, blockSize));    j++;    }    return bout.toByteArray();    } catch (Exception e) {    throw new EncryptException(e.getMessage());    }    }      File file = new File("test.html");    FileInputStream in = new FileInputStream(file);    ByteArrayOutputStream bout = new ByteArrayOutputStream();    byte[] tmpbuf = new byte[1024];    int count = 0;    while ((count = in.read(tmpbuf)) != -1) {    bout.write(tmpbuf, 0, count);    tmpbuf = new byte[1024];    }    in.close();    byte[] orgData = bout.toByteArray();    KeyPair keyPair = RSAUtil.generateKeyPair();    RSAPublicKey pubKey = (RSAPublicKey) keyPair.getPublic();    RSAPrivateKey priKey = (RSAPrivateKey) keyPair.getPrivate();    byte[] pubModBytes = pubKey.getModulus().toByteArray();    byte[] pubPubExpBytes = pubKey.getPublicExponent().toByteArray();    byte[] priModBytes = priKey.getModulus().toByteArray();    byte[] priPriExpBytes = priKey.getPrivateExponent().toByteArray();    RSAPublicKey recoveryPubKey = RSAUtil.generateRSAPublicKey(pubModBytes,pubPubExpBytes);    RSAPrivateKey recoveryPriKey = RSAUtil.generateRSAPrivateKey(priModBytes,priPriExpBytes);    byte[] raw = RSAUtil.encrypt(priKey, orgData);    file = new File("encrypt_result.dat");    OutputStream out = new FileOutputStream(file);    out.write(raw);    out.close();    byte[] data = RSAUtil.decrypt(recoveryPubKey, raw);    file = new File("decrypt_result.html");    out = new FileOutputStream(file);    out.write(data);    out.flush();    out.close();    103.计算文件大小  /*  import java.io.*;  private final long KB=1024;  private final long MB=1024*KB;  private final long GB=1024*MB;  */  //文件属性  File file=new File(%%1);  //如果文件存在而且是文件,直接返回文件大小  if(file.exists()&&file.isFile())  {  long filesize= file.length();  String showsize;  if(filesize>=GB)  showsize=filesize/GB+" GB";  else if(filesize>=MB)  showsize=filesize/MB+" MB";  else if(filesize>=KB)  showsize=filesize/KB+" KB";  else if(filesize>1)  showsize=filesize/GB+" Bytes";  else  showsize="1 Byte";  String %%2=showsize;  }    104.计算文件夹的大小  /*  import java.io.*;  import java.math.*;  //bt字节参考量  private static final long SIZE_BT=1024L;  //KB字节参考量  private static final long SIZE_KB=SIZE_BT*1024L;  //MB字节参考量  private static final long SIZE_MB=SIZE_KB*1024L;  //GB字节参考量  private static final long SIZE_GB=SIZE_MB*1024L;  //TB字节参考量  private static final long SIZE_TB=SIZE_GB*1024L;  private static final int SACLE=2;  //文件大小属性  private static long longSize;  */  private void getFileSize(File file) {  // 获得文件目录下文件对象数组  File[] fileArray = file.listFiles();  // 如果文件目录数组不为空或者length!=0,即目录为空目录  if (fileArray != null && fileArray.length != 0) {  // 遍历文件对象数组  for (int i = 0; i < fileArray.length; i++) {  File fileSI = fileArray[i];  // 如果是目录递归遍历  if (fileSI.isDirectory()) {  // 递归遍历  getFileSize(fileSI);  }  // 如果是文件  if (fileSI.isFile()) {  longSize += fileSI.length();  }  }  } else {  // 如果文件目录数组为空或者length==0,即目录为空目录  longSize = 0;  }  }  // 文件存在而且是目录,递归遍历文件目录计算文件大小  File file = new File(folderPath);  if (file.exists() && file.isDirectory()) {  getFileSize(file);// 递归遍历  }  String %%2="0 Byte";  if (longSize == 1) {  %%2="1 Byte";  } else if (longSize >= 2 && longSize < SIZE_BT) {  %%2=longSize + " Bytes";  } else if (longSize >= SIZE_BT && longSize < SIZE_KB) {  %%2=longSize / SIZE_BT + " KB";  } else if (longSize >= SIZE_KB && longSize < SIZE_MB) {  %%2=longSize / SIZE_KB + " MB";  } else if (longSize >= SIZE_MB && longSize < SIZE_GB) {  BigDecimal longs = new BigDecimal(Double.valueOf(longSize + "")  .toString());  BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_MB + "")  .toString());  String result = longs.divide(sizeMB, SACLE,  BigDecimal.ROUND_HALF_UP).toString();  // double result=longSize/(double)SIZE_MB;  %%2=result + " GB";  } else {  BigDecimal longs = new BigDecimal(Double.valueOf(longSize + "")  .toString());  BigDecimal sizeMB = new BigDecimal(Double.valueOf(SIZE_GB + "")  .toString());  String result = longs.divide(sizeMB, SACLE,  BigDecimal.ROUND_HALF_UP).toString();  %%2=result + " TB";  }    105.快速获得当前程序的驱动器、路径、文件名和扩展名  String %%2=%%1.substring(0,%%1.lastIndexOf(":"));  String %%5=%%1.substring(0,%%1.lastIndexOf("\\"));  String %%4=%%1.substring(%%1.lastIndexOf("\\")+1);  String %%3=%%1.substring(%%1.lastIndexOf('.'));    106.磁盘剩余空间计算  //import java.io.*;  File file = new File(%%1); //"C:"  long %%2 = file.getFreeSpace(); //file.getTotalSpace()    107.获取当前程序进程ID  java是在jvm上跑的,jvm本身作为系统的一个进程在跑,  所以平时见到的都是java多线程,没有进程间通信,  为什么呢,就是因为java中没有进程这一说法,  除非指的是程序本身这个进程。这个进程的话需要用到系统命令或者底层c语言才能够得到。呃,本人jni不是太熟悉,可以参考  http://hi.baidu.com/lff0305/blog/item/4f301a7b20d3d3f20bd187e3.html,  linux下直接调用ps-ef再用管道提取吧。    108.全盘搜索文件  import java.io.*;  //ArrayList fileNames=new ArrayList();  void listDirectory(String dir)  {  File f=new File(dir);  File[] files=f.listFiles();  if(files==null)  return;  for(int i=0;i<files.length;i++)  {  if(files[i].isDirectory())  {  System.out.println("-----------"+files[i]+" is a directory has more files bellow:");  listDirectory(files[i].getAbsolutePath());  //listDirectory(files[i].getName());  //listDirectory(files[i].toString());  }    else  {  System.out.println(files[i]);  }  }  }  File[] roots=File.listRoots();  for(int i=0;i<roots.length;i++)  {  System.out.println(roots[i]);  }  }  lrt.listDirectory("D:"+File.separator);