아이디어 :
먼저 jbutton 컨트롤이 선택된 파일의 절대 경로를 표시해야합니다 교체 된 텍스트.
파일 선택 버튼의 경우 JBUTTON 클래스의 addActionListener () 메소드를 사용하여 이벤트를 바인딩하고 이벤트에서 ActionPerformed () 함수를 정의하고 기능 본문에서 파일을 선택하는 메소드를 호출하십시오.
선택 파일 메소드에서 먼저 jfilechooser 파일 선택기를 만들고 JFileChooSer 클래스의 setFileFilter () 메소드를 사용하여 파일 확장 필터를 작성한 다음 jfileChooser 클래스의 setFileSelectionMode () 메소드를 사용하여 파일 선택 모드를 a로 설정하십시오. 파일 및 JFILECHOOSER 클래스의 showopEndialog를 사용하여 파일 선택 모드를 파일로 설정하는데, 파일 열기 대화 상자를 표시하고 사용자가 취소 버튼 대신 열기 버튼을 누르십시오. 사용자는 jfilechooser 클래스의 getSelectedFile () 메소드를 통해 얻어지며, 파일 정보는 jtextfield 클래스의 settext () 메소드를 사용하여 텍스트 상자에 표시됩니다.
교체 버튼의 경우 파일 버튼을 선택하고 JBUTTON 클래스의 addActionListener () 메소드를 사용하여 이벤트를 바인딩하고 이벤트에서 ActionPerformed () 함수를 정의하고 기능 본문에서 텍스트를 대체하는 메소드를 호출하십시오.
대체 텍스트 메소드에서 먼저 텍스트 필드 클래스의 getText () 메소드를 사용하여 텍스트를 검색하고 검색 텍스트가 비어 있지 않으면 FilEREADER 파일 입력 스트림을 작성하십시오. 문자 배열 및 StringBuilder String Construction filereader 클래스의 read () 메소드는 파일 내용을 while () 루프에서 문자열 빌더에 읽습니다. 스트리밍하고 StringBuilder 클래스를 사용하십시오 replace () 메소드는 빌더에서 문자열을 생성하고 검색 텍스트를 대체 한 다음 filewriter 파일 출력 스트림을 작성하고 filewriter 클래스의 write () 메소드를 사용하여 교체 된 문자열을 파일에 쓸 수 있습니다. filewriter class () 메소드는 출력 스트림을 닫은 다음 filenotfoundException과 ioException 예외를 차례로 포착 한 다음 마지막으로 JoptionPane 클래스의 showMessagedIalog () 메소드를 사용하여 사용자가 교체를 완료하도록 촉구합니다.
파일 열기 버튼의 경우 JBUTTON 클래스의 addActionListener () 메소드를 사용하여 이벤트를 바인딩하고 이벤트에서 ActionPerformed () 함수를 정의하고 기능 본문에서 파일을 열는 메소드를 호출하십시오.
열린 파일 메소드에서 Desktop.getDeskTop ()를 사용하고 ioException 예외를 포착합니다.
코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
java.awt.borderlayout import;
공개 클래스 REPLECETFILETEXT jframe {
/**
*
*/
개인 정적 최종 최종 긴 SerialversionUID = 8674569541853793419L;
개인 jpanel contentpane;
개인 jtextfield 파일 필드;
개인 JtextField SearchTextField;
Private Jtextfield ReplacetextField;
개인 파일 파일;
/**
* 응용 프로그램을 시작하십시오.
*/
public static void main (String [] args) {
eventqueue.invokelater (new Runnable () {
public void run () {
노력하다 {
replaceFileText frame = new ReplaceFileText ();
frame.setVisible (true);
} catch (예외 e) {
e.printstacktrace ();
}
}
});
}
/**
* 프레임을 만듭니다.
*/
public replacefileText () {
setResizable (false);
setDefaultCloseOperation (jframe.exit_on_close);
세트 바운드 (100, 100, 501, 184);
ContentPane = 새로운 jpanel ();
ContentPane.SetBorder (New Emptyborder (5, 5, 5, 5));
ContentPane.SetLayout (New BorderLayout (0, 0));
SetContentPane (ContentPane);
JPANEL 패널 = 새로운 JPANEL ();
PALEN.SETPREUFERREDSIZE (New Dimension (10, 91));
contentpane.add (PANEL, BORTHLAYOUT.CENTER);
gridbaglayout gbl_panel = new Gridbaglayout ();
gbl_panel.columnwidths = new int [] {81, 0, 0, 66, 0};
gbl_panel.rowheights = new int [] {23, 0, 0, 0, 0};
gbl_panel.columnweights = new Double [] {0.0, 0.0, 0.0, 1.0,
double.min_value};
gbl_panel.rowweights = new Double [] {0.0, 0.0, 0.0, 0.0,
double.min_value};
PALEN.SETLAYOUT (GBL_PANEL);
jbutton button = new Jbutton ( "파일 선택");
button.addactionListener (new ActionListener () {
public void actionperformed (ActionEvent e) {
do_button_actionperformed (e);
}
});
Gridbagconstraints GBC_BUTTON = New GridbagConstraints ();
gbc_button.anchor = gridbagconstraints.northwest;
gbc_button.insets = 새로운 삽입 (0, 0, 5, 5);
gbc_button.gridx = 0;
gbc_button.gridy = 0;
PALEN.ADD (버튼, GBC_BUTTON);
filefield = 새로운 jtextfield ();
filefield.seteditable (false);
gridbagconstraints gbc_filefield = new Gridbagconstraints ();
gbc_filefield.gridwidth = 3;
gbc_filefield.insets = 새로운 삽입 (0, 0, 5, 0);
gbc_filefield.fill = gridbagconstraints.horizontal;
gbc_filefield.gridx = 1;
gbc_filefield.gridy = 0;
PALEN.ADD (Filefield, GBC_FileField);
filefield.setColumns (10);
jlabel label = new Jlabel ( "검색 텍스트 :");
gridbagconstraints gbc_label = new Gridbagconstraints ();
gbc_label.anchor = gridbagconstraints.east;
gbc_label.insets = 새로운 삽입 (0, 0, 5, 5);
gbc_label.gridx = 0;
gbc_label.gridy = 1;
PALEN.ADD (레이블, GBC_LABEL);
SearchTextField = New JtextField ();
gridbagconstraints gbc_searchtextfield = new Gridbagconstraints ();
gbc_searchtextfield.gridwidth = 3;
gbc_searchtextfield.insets = 새로운 삽입 (0, 0, 5, 0);
gbc_searchtextfield.fill = gridbagconstraints.horizontal;
gbc_searchtextfield.gridx = 1;
gbc_searchtextfield.gridy = 1;
PANIL.ADD (SearchTextField, GBC_SearchTextField);
SearchTextField.SetColumns (10);
jlabel label_1 = new Jlabel ( "대체 :");
gridbagconstraints gbc_label_1 = new gridbagconstraints ();
gbc_label_1.anchor = gridbagconstraints.east;
gbc_label_1.insets = 새로운 삽입 (0, 0, 5, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 2;
PALEN.ADD (label_1, gbc_label_1);
replacetextfield = 새로운 jtextfield ();
gridbagconstraints gbc_replacetextfield = new Gridbagconstraints ();
gbc_replacetextfield.gridwidth = 3;
gbc_replacetextfield.insets = 새로운 삽입 (0, 0, 5, 0);
gbc_replacetextfield.fill = gridbagconstraints.horizontal;
gbc_replacetextfield.gridx = 1;
gbc_replacetextfield.gridy = 2;
PALEN.ADD (REPLACEEXTFIELD, GBC_REPLACETEXTFIELD);
replacetextfield.setColumns (10);
JPANEL PANEL_1 = 새로운 jpanel ();
gridbagconstraints gbc_panel_1 = new gridbagconstraints ();
gbc_panel_1.gridwidth = 4;
gbc_panel_1.fill = gridbagconstraints.both;
gbc_panel_1.gridx = 0;
gbc_panel_1.gridy = 3;
PALEN.ADD (PANEL_1, GBC_PANEL_1);
JBUTTON ReplaceButton = New JButton ( "REPLEC");
replacebutton.addactionListener (new ActionListener () {
public void actionperformed (ActionEvent e) {
do_replacebutton_actionperformed (e);
}
});
PALEN_1.ADD (ReplaceButton);
JBUTTON OPENFILEBUTTON = NEW JBUTTON ( "Open File");
OpenFileButton.addactionListener (New ActionListener () {
public void actionperformed (ActionEvent e) {
do_button_2_ActionPerformed (e);
}
});
PALEN_1.ADD (OpenFileButton);
}
/**
* 파일 버튼 이벤트 처리 방법을 선택하십시오
*
* @param e
*/
보호 된 void do_button_actionperformed (ActionEvent e) {
JFILECHOOSER ChoOSER = New JFILECHOOSER ( "./") ;// 파일 선택기를 만듭니다
// 파일 확장 필터를 설정합니다
chooSer.setFileFilter (new filenameextensionFilter ( "text", "txt",
"Java", "PHP", "HTML", "HTM"));
// 파일 선택 모드를 설정합니다
chooSer.setFilesElectionMode (jfilechooser.files_only);
// 파일 열기 대화 상자 표시
int 옵션 = chooser.showopendialog (this);
// 사용자가 취소 버튼 대신 열기 버튼을 누르는지 확인하십시오.
if (옵션! = jfilechooser.Approve_Option)
반품;
// 사용자가 선택한 파일 객체를 가져옵니다
file = chooser.getSelectedFile ();
// 텍스트 상자에 파일 정보를 표시합니다
filefield.settext (file.toString ());
}
/**
* 버튼 이벤트 처리 방법을 교체하십시오
*
* @param e
*/
보호 된 void do_replacebutton_actionperformed (ActionEvent 이벤트) {
string searchText = searchTextField.getText (); // 검색 텍스트 가져옵니다
문자열 replaceetext = replacetextfield.getText (); // 대체 텍스트 가져옵니다
if (searchText.isempty ())
반품;
노력하다 {
filereader fis = new Filereader (파일); // 파일 입력 스트림 생성
char [] data = new char [1024]; // 버퍼 된 문자 배열 생성
int rn = 0;
StringBuilder sb = new StringBuilder (); // 문자열 빌더를 만듭니다
while ((rn = fis.read (data))> 0) {// 문자열 빌더에 파일 내용을 읽으십시오.
String str = string.valueof (data, 0, rn);
sb.append (str);
}
fis.close (); // 입력 스트림을 닫습니다
// 빌더에서 문자열을 생성하고 검색 텍스트를 교체합니다.
String str = sb.toString (). replace (searchText, replaceText);
filewriter fout = new filewriter (file); // 파일 출력 스트림 생성
fout.write (st.tochararray ()); // 대체 된 문자열을 파일에 씁니다
fout.close (); // 출력 스트림을 닫습니다
} catch (filenotfoundException e) {
e.printstacktrace ();
} catch (ioexception e) {
e.printstacktrace ();
}
joptionpane.showmessagedialog (null, "교체 완료");
}
/**
* 파일 열기 버튼의 이벤트를 처리하는 방법.
*
* @param e
*/
보호 된 void do_button_2_ActionPerformed (ActionEvent e) {
노력하다 {
if (file == null)
반품;
goodtop.getdesktop (). edit (파일);
} catch (ioException e1) {
e1.printstacktrace ();
}
}
}