Ich habe ein kleines Programm geschrieben, was ich schon seit langem brauchte Damit kann man aus beliebig vielen Dateien, die man auswählen kann, einen String durch einen Anderen ersetzen.
Ich wollte euch fragen, ob ich die Conventions richtig angewandt habe und ob ihr Verbesserungsvorschläge habt. Desweiteren wollte ich fragen, wie ich in der Methode replace() herausfinden kann, wie viele Änderungen tatsächlich durchgeführt wurden.
Ich möchte gerne einfach mal euer Urteil wissen, da ich als Anfänger mal überprüft werden möchte
Hier mein Code:
Danke für jede Hilfe.
mfg
BH16
PS: An die Kommentierung des Codes wage ich mich noch nicht so richtig heran, kann mir da jmd vllt ein tut (deutsch? zur Not auch englisch) oder Tipps für richtige Kommentierung/Dokumentation geben?
Ich wollte euch fragen, ob ich die Conventions richtig angewandt habe und ob ihr Verbesserungsvorschläge habt. Desweiteren wollte ich fragen, wie ich in der Methode replace() herausfinden kann, wie viele Änderungen tatsächlich durchgeführt wurden.
Ich möchte gerne einfach mal euer Urteil wissen, da ich als Anfänger mal überprüft werden möchte
Hier mein Code:
Java:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import javax.swing.*;
public class ReplaceInManyFiles extends JFrame implements ActionListener {
ArrayList files;
JList list;
String find;
String replace;
JTextField tfFind;
JTextField tfReplace;
JLabel south;
public ReplaceInManyFiles(int width, int height) {
super("Replace");
setBounds(50, 50, width, height);
files = new ArrayList();
JButton add = new JButton("Add File");
JButton remove = new JButton("Remove");
JButton replace = new JButton("Replace");
list = new JList(files.toArray());
tfFind = new JTextField(5);
tfReplace = new JTextField(5);
JPanel west = new JPanel();
south = new JLabel(" ");
add.addActionListener(this);
remove.addActionListener(this);
replace.addActionListener(this);
west.setLayout(new BoxLayout(west, BoxLayout.Y_AXIS));
west.add(add);
west.add(remove);
west.add(new JLabel());
west.add(new JLabel("Find:"));
west.add(tfFind);
west.add(new JLabel("Replace"));
west.add(tfReplace);
west.add(replace);
add(list, BorderLayout.CENTER);
add(west, BorderLayout.WEST);
add(south, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
ReplaceInManyFiles rimf = new ReplaceInManyFiles(300, 210);
rimf.setVisible(true);
}
void replace() {
String[] fileInput = new String[100];
try {
for (int i = 0; i < files.size(); i++) {
if (files.get(i) != null) {
fileInput[i] = "";
south.setText(files.get(i).toString() + " replacing.");
FileReader eingabe = new FileReader(new File(files.get(i).toString()));
int gelesen = eingabe.read();
while (gelesen != -1) {
fileInput[i] += (char) gelesen;
gelesen = eingabe.read();
}
eingabe.close();
fileInput[i] = fileInput[i].replace(find, replace);
FileWriter fw = new FileWriter(new File(files.get(i).toString()));
for (int j=0; j < fileInput[i].length(); j++) {
fw.write((byte) fileInput[i].charAt(j));
}
fw.close();
}
}
south.setText("Finished!");
}
catch(IOException e) {e.printStackTrace();}
}
void addFile() {
FileDialog d = new FileDialog(this,"Text laden...",FileDialog.LOAD);
d.setVisible(true);
String tempFile = d.getDirectory();
tempFile += d.getFile();
if (!files.contains(tempFile) && !tempFile.equals("nullnull")) {
files.add(tempFile);
south.setText("File added.");
} else if (files.contains(tempFile)) {
south.setText("File already added.");
} else if (tempFile.equals("nullnull")) {
south.setText("Please select a file.");
}
}
void removeFile() {
if (JOptionPane.showConfirmDialog(null,
"Really wonna delete?", "WARNING",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE)
== 1) {
int[] selected = list.getSelectedIndices();
for (int i = 0; i < selected.length; i++) {
files.remove(selected[i]);
}
south.setText("File removed.");
}
}
public void actionPerformed(ActionEvent evt) {
if (evt.getActionCommand().equals("Add File")) {
addFile();
list.setListData(files.toArray());
}
if (evt.getActionCommand().equals("Remove")) {
removeFile();
list.setListData(files.toArray());
}
if (evt.getActionCommand().equals("Replace")) {
boolean suchen = true;
find = tfFind.getText();
replace = tfReplace.getText();
if (find.equals("")) {
int selected = JOptionPane.showConfirmDialog(null,
"Wonna change every space?", "WARNING",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
if (selected == 0) {
suchen = true;
} else {
suchen = false;
}
}
if (replace.equals("")) {
int selected = JOptionPane.showConfirmDialog(null, "Delete founded?",
"ACHTUNG", JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE);
if (selected == 0) {
suchen = true;
} else {
suchen = false;
}
}
if (suchen) {
replace();
}
}
}
}
Danke für jede Hilfe.
mfg
BH16
PS: An die Kommentierung des Codes wage ich mich noch nicht so richtig heran, kann mir da jmd vllt ein tut (deutsch? zur Not auch englisch) oder Tipps für richtige Kommentierung/Dokumentation geben?