• Java文件操作大全


    原文:http://www.open-open.com/code/view/1422263698930

    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
    ");
    for (Properties pro : li) {
    if (pro.containsKey(%%3)) //"ip"
    fw.write("%%3=" + %%6 + "
    ");
    }
    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("
    "));
    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("
    "));
    Element port = document.createElement(%%5);
    port.appendChild(document.createTextNode(%%9));
    node.appendChild(port);
    node.appendChild(document.createTextNode("
    "));
    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 %1injava.exe (
    rem 如输入正确的 Java2SDK 安装目录,开始设置环境变量
    @setx JAVA_HOME %1
    @setx path %path%;%JAVA_HOME%in
    @setx classpath %classpath%;.
    @setx classpath %classpath%;%JAVA_HOME%lib	ools.jar
    @setx classpath %classpath%;%JAVA_HOME%libdt.jar
    @setx classpath %classpath%;%JAVA_HOME%jrelib
    t.jar
    @echo on
    @echo Java 2 SDK 环境参数设置完毕,正常退出。
    ) ELSE (
    IF "%1"=="" (
    rem 如没有提供安装目录,提示之后退出
    @echo on
    @echo 没有提供 Java2SDK 的安装目录,不做任何设置,现在退出环境变量设置。
    ) ELSE (
    rem 如果提供非空的安装目录但没有binjava.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 = "abcu5639u563b";
    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 = '	';
    else if (aChar == 'r')
    aChar = '
    ';
    else if (aChar == 'n')
    aChar = '
    ';
    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
    + "
    程序将在后台运行,并在此时自动关闭计算机!", "设置成功",
    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]='';
    }
    
    但我用这样的代码时结果却无法去掉光驱盘符,allfenqu[]中还是会包含光驱盘符:
    String root;
    for(i=0;i<20;i++)
    {
    root=allfenqu[i]+":\";
    if(GetDriveType(root)==5)
    allfenqu[i]='';
    }
    
    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("
    ");
    }
    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 + "
    ");
    }
    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 + "
    ");
    }
    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() + ""
    ");
    }
    }
    } 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类库。"
    + " 
    "// 换行
    + "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("
    "));
    //添加图片
    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('
    '));
    //得到源文件名中的最后一个逗点.的位置
    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( " 
     " + 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);
  • 相关阅读:
    shell脚本检查文件是否存在
    自己制作rpm软件包(1)
    lsusb是如何工作的
    Linux脚本Shell命令之葵花宝典
    Linux中find常见用法示例
    RPM包制作
    VIM查找替换归纳总结
    vim全局替换命令
    自己制作rpm软件包(2)
    linux shell编程if语句内判断参数
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7484361.html
Copyright © 2020-2023  润新知