| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 934 人关注过本帖
标题:请教如何制作操作界面来传递文件路径
只看楼主 加入收藏
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
 问题点数:0 回复次数:9 
请教如何制作操作界面来传递文件路径
我写了一个ReadWrite.java 文件,主要是实现文本文件的转换, 也就是从一个存放有.txt文本文件的文件夹中读取数据,然后写入到另一个存有.txt 文件的文件夹中,目前我缺少一个操作界面,我现在是直接把文件夹路径写到main函数中,然后通过dos 运行ReadWrite.java文件。
为了操作方便我需要一个界面,主要功能就是把ReadWrite.java转换成可执行文件.exe文件。然后运行,通过鼠标点击“浏览”然后 弹出文件选择对话框,分别选择读取和写入的文件夹,把这两个文件夹路径作为参数传递。附件里面是具体的代码.主要包含3个文件1:ReadWrite.java另外两个是读取和写入的文本文件。分别是readone文件夹下的1.txt(读取文件)和sendtobank文件夹下的1.txt(写入文件)。我现在是直接把文件夹路径写到main函数中,然后通过dos 运行ReadWrite.java文件。

[此贴子已经被作者于2006-7-10 16:48:21编辑过]

搜索更多相关主题的帖子: 路径 界面 文件 制作 
2006-07-10 16:41
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 

我把附件内容直接贴出来
ReadWrite.java
/*
* ReadWrite.java
*
* Created on 2006年6月19日, 上午8:30
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/


import java.io.*;
import java.util.*;
import java.text.*;
import java.text.SimpleDateFormat;
/**
*
* @author Administrator
*/
public class ReadWrite {
/** Creates a new instance of ReadWrite */
String readUrl=null;
String writeUrl=null;
String[] files=null;
public ReadWrite(String readUrl,String writeUrl) {
try{
File read=new File(readUrl);
if(read.isDirectory()) { //判断是否是个目录
files=read.list(new TxtFilter());//参数为真则将文件名写入数组
this.readUrl=read.getAbsolutePath();//获取文件路径
}else{
files=new String[1]; //不是目录就是单个文件
files[0]=read.getName(); //获取文件名
this.readUrl=read.getAbsolutePath();//获取文件路径
}
this.writeUrl=writeUrl; //将函数参数中写入地址传进来

} catch(Exception e) {
System.out.println("输入输出错误!"+e);
}

try{
FileReader inputFile=null;
FileWriter outputFile=null;


String strReadLine=null;//用来存放读出的每一行
StringBuffer str1=new StringBuffer(); //用来存放去掉空格以后的每一行数据
String str2=null;//用来存放每一个字段
String space=" ";//定义26个空格用于补充空格
String oneLine=null;//用来存放第一行的所有字段
String twoLine=null;//用来存放第二行的所有字段
String threeLine=null;//用来存放第三行的所有字段
SimpleDateFormat simpleDate=new SimpleDateFormat("yyyyMMdd");//用来格式化日期

//以下是第一行的一些字段
String one_recid="1";//第一行标志
String bankid="4554816";//交易行号
String siteid="0001";//单位代码
String today=(simpleDate.format(new Date())); //交易日期[yyyymmdd]

String sitenm="dddddddddddddddddddddddddd"; //单位名称
String rev="A"; //当日冲正标志
String endflag="E";//本行结束标志
String eol="\r\n";//回车换行

//以下是第一行将要写进去的内容
oneLine=one_recid +space.substring(0, 7-bankid.length()) +bankid +space.substring(0,4-siteid.length()) +siteid +today +space.substring(0,26-sitenm.length()) +sitenm +rev+endflag+eol;


//以下是第二行的一些字段
String two_recid="2"; //第二行标志
String three_recid="3"; //第三行标志
String NewID="w";
String Endflag="E";
String rccode="101"; /* 代收/代付费用代码 */
String digdep="C"; /* 存款标志 [C] */
int dep=0;//存款总金额
String digwtd="D" ;/* 取款标志 [D] */
int wtd=0;//取款总金额
int acno;//总笔数
String testkey="12345678" ; /* 客户盘标键值 */
//System.out.println(files.length+"前面为文件个数");
StringTokenizer tokenizer1=null;
String[] tokenizer1_fields=null;//用存放读出来的每一个字段

BufferedReader bufferedInputFile=null;//缓冲
BufferedWriter bufferedOutputFile=null;
int m; // m用到每一行中的哪一个字段
// int n=0;//n累计总共几行用于计算总笔数,
for(int i=0;i<files.length;i++){ //这个循环用来遍历所有需要转换的文件
dep=0;//存款总金额置零
wtd=0;//取款总金额置零
acno=0;//每打开一个文件统计的总笔数就恢复为0
outputFile=new FileWriter(writeUrl+"\\"+files[i]);//转换后须准备写入的文件
inputFile=new FileReader(readUrl+"\\"+files[i]);//准备读取的文件

bufferedOutputFile=new BufferedWriter(outputFile);//缓冲
bufferedInputFile=new BufferedReader(inputFile);


//下面这段代码是计算出总笔数和存款总金额、取款总金额
tokenizer1_fields=new String[5];//每行5个字段
int x;
while((strReadLine=bufferedInputFile.readLine())!=null){ //读取文件中的每一行

acno+=1;//累计总笔数
//System.out.println(strReadLine);
tokenizer1=new StringTokenizer(strReadLine);
for( x=0;tokenizer1.hasMoreTokens();x++){
tokenizer1_fields[x]=tokenizer1.nextToken();
//System.out.println(tokenizer1_fields[x]);
}


try{
if(tokenizer1_fields[2].equals("C")){//通过收付标示来确定是存款还是取款
dep+=Integer.parseInt(tokenizer1_fields[3].substring(0,tokenizer1_fields[3].indexOf("."))+tokenizer1_fields[3].substring(tokenizer1_fields[3].indexOf(".")+1));
// dep+=float(tokenizer1_fields[3])*100;
}else if(tokenizer1_fields[2].equals("D")){
wtd+=Integer.parseInt(tokenizer1_fields[3].substring(0,tokenizer1_fields[3].indexOf("."))+tokenizer1_fields[3].substring(tokenizer1_fields[3].indexOf(".")+1));
//wtd+=(tokenizer1_fields[3])*100;
}else;
}catch(Exception e){
System.out.println(" 读出金额时转换错误,请仔细观察一下数据中第"+acno+"行的第四个字段是否有非数字字符,谢谢使用,再见!");
}

}


acno=acno-1;//最后一行是汇总行,所以总笔数减一.

//以下这一行是把所有的第二行字段都合并起来。
twoLine= two_recid+rccode+digdep+space.substring(0,11-(""+dep).toString().length())+dep +digwtd + space.substring(0, 11-(""+wtd).toString().length()) +wtd +space.substring(0, 5-(""+acno).toString().length()) +acno +space.substring(0, 8-testkey.length()) + testkey +endflag +eol;
// System.out.println("this two "+twoLine);
//以下这四句代码是把第一行和第二行的内容写进去。
bufferedOutputFile.write(oneLine);
bufferedOutputFile.flush();
bufferedOutputFile.write(twoLine);
bufferedOutputFile.flush();

String[] three_fields=new String[5];//每行共五个字段


bufferedInputFile.close();//关闭文件以便定位读取口,这一步需要改进
inputFile=new FileReader(readUrl+"\\"+files[i]);//重新打开准备读取的文件
bufferedInputFile=new BufferedReader(inputFile);

int Seqno=1; //顺序号
while((strReadLine=bufferedInputFile.readLine())!=null&&Seqno<=acno){ //读取文件中的每一行

StringTokenizer tokenizer2=new StringTokenizer(strReadLine);
m=0;
while(tokenizer2.hasMoreTokens()){//这个循环用来把读出来的一行中的每一个字段都读出来
three_fields[m]=tokenizer2.nextToken();//把读出来的每一个字段存到three_fields中
m++;
}
//下面这一句是把第三行开始的数据行整理好

try{
threeLine= three_recid+space.substring(0, 5-(""+Seqno).toString().length())+Seqno+space.substring(0, 18-three_fields[1].length())+three_fields[1]+ ( three_fields[2].equals("C")?"C":"D")+space.substring(0,11-(Integer.parseInt(three_fields[3].substring(0,three_fields[3].indexOf("."))+three_fields[3].substring(three_fields[3].indexOf(".")+1)) +"").length())+Integer.parseInt(three_fields[3].substring(0,three_fields[3].indexOf("."))+three_fields[3].substring(three_fields[3].indexOf(".")+1))+ NewID+"0"+ space.substring(0, 7-three_fields[0].length())+three_fields[0] +Endflag+eol ;
}catch(Exception e){
System.out.println("1读取第"+Seqno+"行时出错,请观察那一行中的第四个字段是否存在非数字字符,谢谢使用,再见!");
}

Seqno++;//顺序号加1
bufferedOutputFile.write(threeLine);
bufferedOutputFile.flush();

}
bufferedOutputFile.write("9");
bufferedOutputFile.flush();
}
}catch(Exception e){
}


}
private class TxtFilter extends Object implements FilenameFilter{

/** Creates a new instance of TxtFilter */
public TxtFilter() {
}
public boolean accept(File dir,String name){
return name.endsWith(".txt");
}


}


public static void main(String[] args){
ReadWrite readWrite=new ReadWrite("e:\\chinabank\\readone\\","e:\\chinabank\\sendtobank\\");
}


}
//下面是读取的文本文件
1.txt
0001a 455350400010001413 D 1478.00 123456789123
0002a 455350400010002231 D 1623.00 456464651166
0003a 455350400010003084 D 2171.00 564646161616
0004b 455350400010003440 D 1508.00 616516161666
HZ 4 678000
//下面是写入的文本文件
1.txt
14554816000120060710ddddddddddddddddddddddddddAE
2101C 0D 678000 412345678E
3 1455350400010001413D 147800w0 0001aE
3 2455350400010002231D 162300w0 0002aE
3 3455350400010003084D 217100w0 0003aE
3 4455350400010003440D 150800w0 0004bE
9

2006-07-10 16:45
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 

请帮我写个界面,我自己尝试很久都没成功,谢谢了!

[此贴子已经被作者于2006-7-10 16:47:40编辑过]

2006-07-10 16:46
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
把把JAVA文件转成EXE,还不现实

可惜不是你,陪我到最后
2006-07-10 16:58
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 
我听别人说用 jfilechoser类,不知道如何用
2006-07-10 18:12
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

javax.swing.JFileChooser
你可以看看它的API


可惜不是你,陪我到最后
2006-07-10 18:13
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 

版主能否帮我写一个,我实在是没办法,我自己试过好多次了,由于经验不足,老出错,现在时间要求很紧,所以求助大家了!这是其中一个,写好了这个,另外一个,我自己参考着就可以写了!我也在福建,福州·

2006-07-10 21:39
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
不好意思,我最近也比较忙,
如果你不很急的话,过几天我帮你写

可惜不是你,陪我到最后
2006-07-11 10:03
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 
先谢谢了!周一开会时候,由于拖了两个礼拜了,所以我给经理说了,这周四之内搞定,我这几天也一直在弄这个!
2006-07-11 18:19
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 
我暂时使用文本框直接赋默认值,有修改的话只好敲键盘了,还须改进,呵呵!
2006-07-18 08:55
快速回复:请教如何制作操作界面来传递文件路径
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059399 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved