关闭

帖原码,大家批评。

238人阅读 评论(1) 收藏 举报

做了一个简单的二进制文件转换工具,没什么实现功能,只为玩玩。路过的高手帮瞧瞧,里面有很多写得不地道的,请批评。

 

详细开发文档

[项目名称] 

二进制文件转换工具。

[开发者]   

Jakar

[开发时间]  

2007-10-62007-10-7

[功能简单描述]

通过设定路置,把一个二进制文件从一个地方转换到另一个地方,并通过修改后缀来改变文件的格式。

在输入目录时,下方的text框会显示当前输入目录下的文件名,并通过滤器,留下以输入文件名开始的那些文件。

增加转换为html功能,只是把所有东西放到html<body>里面,使其可以在浏览器中打开。

[应用技术]

       主要通过java.IO来实现。界面是用java.ui来做的。

[工程组成]

       ChangeForm.java。写入写出的实现文件。

       ChangeFormFrame.java 界面。

       DirFilter.java 文件名过滤器,在这里实现了以输入内容开头的匹配。

       DirLister.java 通过指定路径,列出路径下所有文件,也可能通过过滤留下想要的。

[可扩展内容]

1.       输入路径更智能化,当按下回车时下方列出的第一个文件会自己动上去,还可以实现autocomplete.

2.       加入文件选择框,方便windows用户使用。

3.       增加文件类型过滤(可通过过滤后缀实现)。

4.       增加实用功能,具体现在没想到。

 

package com.fenet.changeform;

import java.io.*;

/**
 * 处理转换的主文件。
 *
 * 
@author Jakar
 * 
@version 1.00 07/10/04
 
*/
public class ChangeForm{
    
public static void Change(String oldFile,String newFile){
        
try{
            BufferedReader in
=new BufferedReader(new FileReader(oldFile));
            PrintWriter out
=new PrintWriter(new BufferedWriter(new FileWriter(newFile)));
            String s
=new String();
            
while((s=in.readLine())!=null){
                s.replace(
'/','/');//windows的路径是用表示,要转为/
                out.println(s);
            }
            out.close();
        }
catch(Exception e){
            e.printStackTrace();
        }
    }
    
    
public static void ChangeToHTML(String oldFile,String newFile){
        
try{
            BufferedReader in
=new BufferedReader(new FileReader(oldFile));
            PrintWriter out
=new PrintWriter(new BufferedWriter(new FileWriter(newFile)));
            
int lineCount=1;
            String s
=new String();
            out.println(
"<html>");
            out.println(
"<body>");
            
while((s=in.readLine())!=null){
                s.replace(
'/','/');
                out.println(s
+"<br>");
            }
            out.println(
"</body>");
            out.println(
"</html>");
            out.close();
        }
catch(Exception e){
            e.printStackTrace();
        }
    }
    
    
public static void main(String[] args){
        
        ChangeFormFrame frame 
= new ChangeFormFrame();
        
// Show frame
        frame.setVisible(true);
        
//ChangeForm.Change("F:/JCreator/MyProjects/ChangeForm/src/DirFilter.java","C:/Documents and Settings/Wenney/桌面/DirFilter.html");
    }
    
}

 

package com.fenet.changeform;

import java.awt.*;
import java.awt.event.*;
import com.fenet.changeform.ChangeForm;
import com.fenet.changeform.DirLister;

/**
 * Frame
 *
 * 
@author Jakar
 * 
@version 1.00 07/10/04
 
*/

public class ChangeFormFrame extends Frame {
    
private Panel northPanel;
    
private Panel mainPanel;
    
private Panel southPanel;
    
private Label oldFileLabel;
    
private Label newFileLabel;
    
private TextArea oldFile;
    
private TextArea newFile;
    
private TextField oldFilePath;
    
private TextField newFilePath;
    
private Button change;
    
private Button changeToHTML;
    
/**
     * The constructor.
     
*/
  
     
public ChangeFormFrame() {
         
         oldFileLabel
=new Label("输入原文件完整地址:");
         oldFilePath
=new TextField();
        
         oldFile
=new TextArea();
         
//增加text框的listener,当出现"/"自己动列出其目录下的文件名。
         
//最后一个"/"后面的内容为过滤的条件。
         class TextHandler1 implements TextListener{
            
public void textValueChanged(TextEvent e) {
                String s
=oldFilePath.getText();
                String s1
=new String();
                String s2
=new String();
                
if(s.lastIndexOf("/")!=-1){
                    s1
=s.substring(0,s.lastIndexOf("/"));
                    s2
=s.substring(s.lastIndexOf("/")+1,s.length());
                }

                 
if(!s1.equals("")){
                     
if(s2.equals(""))
                         oldFile.setText(DirLister.getFiles(s1));
                     
else
                         oldFile.setText(DirLister.getFiles(s1,s2));
                 }
    
            }

        }

        oldFilePath.addTextListener(
new TextHandler1());
         
         
         northPanel
=new Panel();
        northPanel.setLayout(
new BorderLayout());
        northPanel.add(oldFileLabel,BorderLayout.NORTH);
        northPanel.add(oldFilePath,BorderLayout.CENTER);
        northPanel.add(oldFile,BorderLayout.SOUTH);         
         
         newFileLabel
=new Label("输入转换文件完整地址及文件名:");
         newFilePath
=new TextField("C:/Documents and Settings/Wenney/桌面/");
         newFile
=new TextArea();
         newFile.setText(DirLister.getFiles(
"C:/Documents and Settings/Wenney/桌面/"));
         
//增加text框的listener,当出现"/"自己动列出其目录下的文件名。
         
//最后一个"/"后面的内容为过滤的条件。
         class TextHandler2 implements TextListener{
            
public void textValueChanged(TextEvent e) {
                String s
=newFilePath.getText();
                String s1
=new String();
                String s2
=new String();
                
if(s.lastIndexOf("/")!=-1){
                    s1
=s.substring(0,s.lastIndexOf("/"));
                    s2
=s.substring(s.lastIndexOf("/")+1,s.length());
                }

                 
if(!s1.equals("")){
                     
if(s2.equals(""))
                         newFile.setText(DirLister.getFiles(s1));
                     
else
                         newFile.setText(DirLister.getFiles(s1,s2));
                 }
    
            }

        }

         newFilePath.addTextListener(
new TextHandler2());
         
         southPanel
=new Panel();
        southPanel.setLayout(
new BorderLayout());
        southPanel.add(newFileLabel,BorderLayout.NORTH);
        southPanel.add(newFilePath,BorderLayout.CENTER);
        southPanel.add(newFile,BorderLayout.SOUTH);
         
         change
=new Button("格式转换");
         
class ButtonHandler1 implements ActionListener {
            
public void actionPerformed(ActionEvent e) {
                ChangeForm.Change(oldFilePath.getText(),newFilePath.getText());
            }

        }

         change.addActionListener(
new ButtonHandler1());
         changeToHTML
=new Button("转换为HTML");
         
class ButtonHandler2 implements ActionListener {
            
public void actionPerformed(ActionEvent e) {
                ChangeForm.ChangeToHTML(oldFilePath.getText(),newFilePath.getText());
            }

        }

        changeToHTML.addActionListener(
new ButtonHandler2());
        
         
         
         mainPanel
=new Panel();
        mainPanel.setBackground(Color.darkGray);
        mainPanel.add(change);
        mainPanel.add(changeToHTML);

        
        setTitle(
"二进制文件转换工具");
        
        
// Add window listener.
        this.addWindowListener
        (
            
new WindowAdapter() {
                
public void windowClosing(WindowEvent e) {
                    ChangeFormFrame.
this.windowClosed();
                }

            }

        ); 
        
this.setLayout(new BorderLayout());
        
this.add(northPanel,BorderLayout.NORTH);
        
this.add(mainPanel,BorderLayout.CENTER);
        
this.add(southPanel,BorderLayout.SOUTH);
        
this.pack();
         
   
    
}

    
    
    
/**
     * Shutdown procedure when run as an application.
     
*/

    
protected void windowClosed() {       
        
// Exit application.
        System.exit(0);
    }

}




 

package com.fenet.changeform;

import java.io.*;
import java.util.*;
import java.util.regex.*;

/**
 * 目录过滤器。
 * 过滤剩下以给出的以reg开头的文件。
 * 本来是通过正则表达式过滤的,没有成功,只好用字符串的函数。
 *
 * 
@author Jakar
 * 
@version 1.00 07/10/04
 
*/

public class DirFilter implements FilenameFilter{
//    private Pattern pattern;
    private String s=new String();
    
    
/**
     * constructor
     * to get the Starting of the Filename.
     
*/

    
public DirFilter(String reg){
    
//    pattern=Pattern.compile(reg.concat("*"));
        s=reg;
    }

    
    
/**
     * implements from the FilenameFilter interface.
     * set the statment to filt the filename.
     
*/

    
public boolean accept(File dir,String name){
    
//    return pattern.matcher(new File(name).getName()).matches();
        return new File(name).getName().startsWith(s);
    }

}

 

package com.fenet.changeform;

import java.io.*;
import java.util.*;
import java.util.regex.*;
import com.fenet.changeform.DirFilter;
import com.fenet.changeform.JavaToTxt;

/**
 * 目录列举器。
 * 工具类,提供getFiles方法,获得文件名列表。
 *
 * 
@author Jakar
 * 
@version 1.00 07/10/04
 
*/

public class DirLister{
    
/**
     * 默认当前目录,无过滤。在本工具中没应用,预备扩展。
     
*/

    
public static String getFiles(){
        
return DirLister.getFiles(".","");
    }

    
    
/**
     * 设置目录,无过滤。在本工具中没应用,预备扩展。
     
*/

    
public static String getFiles(String filePath){
        
return DirLister.getFiles(filePath,"");
    }

    
    
/**
     * 返回一个字符串,列举了filePath给定的目录下,以reg开头的文件名。
     
*/

    
public static String getFiles(String filePath,String reg){
        StringBuffer sb
=new StringBuffer();
        
try{
            File path
=new File(filePath);
            String list[];
            
if(reg.equals("")){
                list
=path.list();
            }

            
else{
                list
=path.list(new DirFilter(reg));
            }

            
for(int i=0;i<list.length;i++){
                sb.append(list[i]);
                sb.append(
' ');
            }

            
return new String(sb);
        }
catch(Exception e){
        
//    e.printStackTrace();
            return new String("目录不存在 "+e.getMessage());
        }

    }

}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:854次
    • 积分:42
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论