import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;public class FileDemo extends JFrame implements ActionListener{
JFrame fra=new JFrame("文件测试窗口!");
String FilePath=new String();
Button open,save,exit;
FileDialog sv,op;
TextArea ta;
TextField name;

public FileDemo(){
Init();
}
private void Init(){
fra.setContentPane(createcontent());
fra.setBounds(250,70,300,250);
fra.setVisible(true);
}
private JPanel createcontent() {
JPanel p=new JPanel(new BorderLayout());
name=new TextField();
p.add(BorderLayout.NORTH,name);

p.add(BorderLayout.CENTER,createPanel());

ta=new TextArea(8,20);
p.add(BorderLayout.SOUTH,ta);
op = new FileDialog(fra, "打开", FileDialog.LOAD);
sv = new FileDialog(fra, "保存", FileDialog.SAVE);
return p;
}

private JPanel createPanel() {
JPanel p=new JPanel();
open=new Button("打开文件");
save=new Button("另存为");
exit=new Button("退出系统");
p.add(open);
p.add(save);
p.add(exit);
open.addActionListener(this);
save.addActionListener(this);
exit.addActionListener(this);
return p;
}

@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==open){
if(name.getText().equals("")){
String str="";
op.setVisible(true);
try {
File f1 = new File(op.getDirectory(), op.getFile());//打开文件
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);//读取文件
ta.setText("");//设置文本框内容为空
while ((str = br.readLine()) != null)
ta.append(str + '\n');//文本框添加读取的文件内容
fr.close();
}catch(Exception e1){
e1.getMessage();
}
}else{
String pathstr = name.getText();
Pattern p = Pattern.compile("^[a-zA-Z]:\\?/.+?$");
        Matcher m = p.matcher(pathstr);
if(m.matches()){
String str1="";
try {
File f1 = new File(pathstr);//打开文件
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);//读取文件
ta.setText("");//设置文本框内容为空
while ((str1 = br.readLine()) != null)
ta.append(str1 + '\n');//文本框添加读取的文件内容
fr.close();
}catch(Exception e1){
e1.getMessage();
}
}else{
JOptionPane.showMessageDialog(
null,"输入不正确","Information",JOptionPane.INFORMATION_MESSAGE);
}
}
}
if(e.getSource()==save){
sv.setVisible(true);
try {
File f1 = new File(sv.getDirectory(), sv.getFile());
FileWriter fw = new FileWriter(f1);
BufferedWriter bw = new BufferedWriter(fw);
String gt = ta.getText();//获取文本框内容
bw.write(gt, 0, gt.length());//将文本框内容写入文件
bw.flush();//真正的写入文件
fw.close();//关闭写入
} catch (Exception e2) {//错误处理
e2.printStackTrace();//打印错误信息
}
}
if(e.getSource()==exit){
int value=JOptionPane.showConfirmDialog(null, "确定要关闭吗?");
    if (value==JOptionPane.OK_OPTION) {
     System.exit(0);
    }
}
}
public static void main(String[] args) {
FileDemo file=new FileDemo();
}}
上面代码是文件打开和保存代码大神帮我写个正则表达式吧= =用来检测文件路径是否正确原则上是这样的:C:\Pal5Revoke.txtC:\aaa\bb\Pal5Revoke.txt我写的是^[a-zA-Z]:\\?/.+?$但是不行。麻烦大神帮我看看。。

解决方案 »

  1.   


    ^[a-zA-Z]:\\\\(.+\\\\)?.*\\.txt
      

  2.   

    Pattern p4 = Pattern.compile("^[a-zA-Z]:\\\\(.+\\\\)?.*\\.txt");
    Matcher m4 = p4.matcher("C:\\Pal5Revoke.txt");
    while(m4.find()){
    System.out.println(m4.group());
    }
      

  3.   

    检查路径的目的是什么,我觉得像你这个可以检查一下文件的格式就可以了,比如,你只允许打开.doc,.docx,.txr的文档,
      

  4.   

    同LS
    检测路劲的意义在哪里?
    打开文件的话,判断File.exists()就知道文件是否存在
    保存的话,一般两种逻辑
    1.自动建立对应文件夹,用File.mkdirs
    2.不自动建立文件夹,try catch一下,报错就给警告就完了