0

So, recently, my father asked me to make a project that involves gathering usernames, passwords, etc., so that he would have a set location to find all of his logins.

I have a program that successfully gathers information and writes a new text file every single time you run the program. My goal is to make it so the information is stored in the SAME file, but there is a space between each set of information.

Here's my code (I apologize, I'm only 14):

package com.src.java;

import java.io.IOException;
import java.io.PrintWriter;

import java.net.MalformedURLException;

import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.UIManager;

public class Info {

    public static void main(String args[]) throws MalformedURLException,
            IOException, InterruptedException {
        boolean run = true;
        while (run) {
            JTextField companyName = new JTextField();
            JTextField userName = new JTextField();
            JTextField password = new JTextField();
            JTextField accountNumber = new JTextField();
            JTextField phoneNumber = new JTextField();
            JTextField address = new JTextField();

            UIManager.put("OptionPane.cancelButtonText", "Exit");
            UIManager.put("OptionPane.okButtonText", "Create File");
            Object[] message = { "Company name: ", companyName, "Username:",
                    userName, "Password:", password, "Account number:",
                    accountNumber, "Phone number:", phoneNumber, "Address:",
                    address, };
            int option = JOptionPane.showConfirmDialog(null, message,
                    "Fill out your info...", JOptionPane.OK_CANCEL_OPTION);
            if (option == JOptionPane.OK_OPTION) {
                String cN = companyName.getText();
                String uN = userName.getText();
                String pw = password.getText();
                String aN = accountNumber.getText();
                String pN = phoneNumber.getText();
                String ad = address.getText();

                PrintWriter writer = new PrintWriter(cN + ".txt", "UTF-8");

                writer.println("Company name: " + cN);
                writer.println("User name: " + uN);
                writer.println("Password: " + pw);
                writer.println("Account number: " + aN);
                writer.println("Phone number: " + pN);
                writer.println("Address " + ad);
                writer.close();

                System.out.println("Wrote file: " + cN + ".txt");
                Thread.sleep(500);
            } else {
                System.exit(0);
            }
        }
    }
}
  • 1
    possible duplicate of [Java File - Open A File And Write To It](http://stackoverflow.com/questions/10667734/java-file-open-a-file-and-write-to-it) – sab669 Oct 18 '13 at 20:51
  • I understand this is probably a learning exercise, but when it comes to storing passwords, I would really suggest something like KeePass. If the passwords are in a plain text file, a hacker also conveniently has everything in one place (like the family online banking password). – Eric J. Oct 18 '13 at 20:54
  • 1
    possible duplicate of [PrintWriter append method not appending](http://stackoverflow.com/questions/8210616/printwriter-append-method-not-appending) – Jeff Storey Oct 18 '13 at 20:57

2 Answers2

1

The filename you're writing to changes with whatever the name of the company is that's entered. Hardcode the filename in.

Also, set append mode to true...

Embattled Swag
  • 1,479
  • 12
  • 23
1

If you want to write to the same file, you can open it up in append mode, so

new PrintWriter(new FileOutputStream(new File(filename),true));

The true opens the file in append mode

Jeff Storey
  • 56,312
  • 72
  • 233
  • 406