我用Java编写程序,我遇到了一个问题,即我想在一个类中编写一个文件。在另一个类中,我想覆盖此文件,如果该文件的名称已经存在。 但是,第一个类使用JTextField,您可以在其中输入数字。该数字将添加到文件名中。这很完美,但在第二节课中它不会成功。我使用了一个关联,但它给了我一个nullpointer异常。有人可以帮忙吗?
public void actionPerformed(ActionEvent e) {
//make file
String fileName = "Week " + tf1.getText();
File planning = new File(fileName + ".txt");
// save file
if (e.getSource() == b2) {
// file does't exists yet and all field are filled out
if (!planning.exists() && allesGevuld()) {
FileWriter fw;
try {
fw = new FileWriter(planning, false);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(toString());
bw.close();
fw.close();
JOptionPane.showMessageDialog(null,
"De weekplanning is opgeslagen!", "Succes",
JOptionPane.PLAIN_MESSAGE);
dispose();
} catch (IOException e1) {
System.out.println("Exception ");
}
// no everything is filled in
} else if (!allesGevuld()) {
JOptionPane.showMessageDialog(null,
"Niet alle velden zijn ingevuld!", "Mislukt",
JOptionPane.PLAIN_MESSAGE);
}
// to overwriting frame
else if (planning.exists() && allesGevuld()) {
OverschrijvenFrame ov = new OverschrijvenFrame(planningFrame);
ov.setVisible(true);
}
}
}
第二课:
if (e.getSource() == overschrijf) {
// overschrijven van file
String fileName = "Week"+ ;//this is where the number should be overwritten
File planning = new File(fileName + ".txt");
// delete the file which will be overwritten
planning.delete();
// new file
File nieuw = new File(fileName + ".txt");
FileWriter fw;
try {
fw = new FileWriter(nieuw);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(planningFrame.toString());
bw.close();
fw.close();
dispose();
} catch (IOException e1) {
System.out.println("Exception ");
}
}
}
答案 0 :(得分:0)
使用Java IO
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#exists%28%29
import java.io.*;
//...
new File("pathToFile").exists()
或使用Java NIO
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
import java.nio.file.*;
//...
Files.exists(Paths.get("pathToFile"))
答案 1 :(得分:0)
你的问题是什么?
如果你不能从第二个类调用tf1.getText(),因为tf1在第一个类中是私有的 - >使其公开或添加公共静态变量来保存可以从第二类引用的文件名。