※ ChatGPTを利用し、要約された質問です(原文:Javaのプログラミングで困っています。)
Javaのプログラミングでプロフィールを表示し、テキストファイルに書き出す方法
このQ&Aのポイント
Javaのプログラミングでプロフィールを表示するプログラムを作成しましたが、テキストファイルに書き出すことができません。
作成したプログラムでは、名前、生年月日、住所、メールアドレス、電話番号を入力して表示することができます。
しかし、書き込み処理が正しく行われず、ファイルにデータが保存されません。書き込み処理に関する知識が不足しているため、どのように修正すればよいかわかりません。
プロフィールを打ち込んで表示するプログラムを書いていました。
プロフィールの打ち込み後に画面に表示するのと同時にテキストファイルに書き出したいと思ったため、書いてみましたが、ファイルに書き込めず知識不足で困っています。
是非教えていただきたく書き込みをさせていただきました。
自分で書いたコードは書きになります。
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Sample extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
static JTextField name;
static JTextField birth;
static JTextField address;
static JTextField mail;
static JTextField number;
JLabel label;
public static void main(String args[]){
Sample frame = new Sample("profile");
frame.setVisible(true);
}
Sample(String title){
setTitle(title);
setBounds(100, 100, 500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel();
name = new JTextField("名前", 20);
birth = new JTextField("生年月日", 20);
address = new JTextField("住所", 40);
mail = new JTextField("mail", 40);
number= new JTextField("電話番号", 30);
JButton button = new JButton("取得");
button.addActionListener(this);
label = new JLabel();
p.add(name);
p.add(birth);
p.add(address);
p.add(mail);
p.add(number);
p.add(button);
Container contentPane = getContentPane();
contentPane.add(p, BorderLayout.CENTER);
contentPane.add(label, BorderLayout.SOUTH);
try{
File file = new File("C:Users\\mattun\\Documents\\sample.txt");
if (checkBeforeWritefile(file)){
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
//ファイルに書き込む内容
pw.println("名前:"+name.getText());
pw.println("生年月日:"+birth.getText());
pw.println("住所:"+address.getText());
pw.println("mail:"+mail.getText());
pw.println("電話:"+number.getText());
pw.close();//ファイルを閉じる
}else{
System.out.println("ファイルに書き込めません");//書き込み出来ない場合
}
}catch(IOException e){
System.out.println(e);
}
}
public void actionPerformed(ActionEvent e){
label.setText("<html>"+"名前:"+name.getText()+"<br>"+"生年月日:"+birth.getText()+"<br>"+"住所:"+address.getText()+
"<br>"+"mail:"+mail.getText()+"<br>"+"電話:"+number.getText()+"</html>");
}
private static boolean checkBeforeWritefile(File file){
if (file.exists()){
if (file.isFile() && file.canWrite()){
return true;
}
}
return false;
}
}
お礼
ありがとうございます。 意味がいまいち理解出来ておりませんでした。 無事、ファイルに書き出すことは出来ましたが、2回目の内容を打ってみても、1回目の内容を書き込んでしまいます。 上書きするのはいいのですが、どのような手順をすれば、1回目の内容を書き出さずに2回目の内容を書き出せるのでしょうか?