楼主想问技术吗,还是代码,首先说技术
完成你说的功能用到的技术如下:用swing写界面,然后用输入流按行读取文件,用正则表达式或者直接contain方法查找。
我写了一个简单的版本你看一下,没考虑换行问题,很容易,自己加就行
//界面类
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class MainFrame extends JFrame {
private JPanel panel;
private JLabel lbl1,lbl2;
private JTextField tf,tf2;
private JButton btn;
private JTextArea ta;
BufferedReader br;
public void init() {
this.setTitle("load txt");
this.setResizable(false);
this.setBounds(100,100,600,400);
}
public MainFrame() {
init();
panel=new JPanel();
this.setContentPane(panel);
panel.setLayout(null);
lbl1=new JLabel();
lbl1.setText("请输入查找字符");
lbl1.setBounds(10,10,100,30);
panel.add(lbl1);
tf=new JTextField();
tf.setBounds(110, 10, 200, 30);
panel.add(tf);
lbl2=new JLabel("请输入文件路径");
lbl2.setBounds(10,50,100,30);
panel.add(lbl2);
tf2=new JTextField();
tf2.setBounds(110, 50, 200, 30);
panel.add(tf2);
btn=new JButton("查找");
btn.setBounds(10,90,60,30);
panel.add(btn);
ta=new JTextArea();
ta.setBounds(10,130,300,270);
panel.add(ta);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
ta.setText("");
br=new BufferedReader(new FileReader(tf2.getText()));
StringBuilder sb=new StringBuilder();
String line="";
String regex=tf.getText();
int count=1;
while((line=br.readLine())!=null) {
if(line.contains(regex)) {
ta.append("在第"+count+"行找到了"+regex+"\r\n");
}
count++;
}
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
}
}
//主类
package test;
public class AssertTest {
public static void main(String[] args) {
MainFrame m=new MainFrame();
m.setVisible(true);
}
}