当前位置: 首页 > 知识库问答 >
问题:

如何使我的程序每次重新打开时都创建一个新的输出文件名?

宁鹏程
2023-03-14

可运行代码:

package guiChallenge;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.JCheckBox;
import javax.swing.UIManager;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.awt.event.ActionEvent;

public class guiChallenge extends JFrame {

    /**
     * 
     */
    private JPanel contentPane;
    private JTextField firstNameTextField;
    private JTextField lastNameTextField;
    private JCheckBox javaCheckBox, cCheckBox, c2CheckBox, pythonCheckBox, phpCheckBox, htmlCheckBox;
    String javaLanguage, cLanguage, c2Language, phpLanguage, pythonLanguage, htmlLanguage;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    guiChallenge frame = new guiChallenge();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     * @throws FileNotFoundException 
     */
    public guiChallenge() throws FileNotFoundException {

        PrintStream output = new PrintStream(new FileOutputStream("Report.txt"));
        System.setOut(output);

        setTitle("Programmer Entry");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JPanel namePanel = new JPanel();
        namePanel.setBorder(new TitledBorder(null, "Name", TitledBorder.LEADING, TitledBorder.TOP, null, null));
        namePanel.setBounds(10, 11, 414, 106);
        contentPane.add(namePanel);
        namePanel.setLayout(null);

        JLabel firstNameLabel = new JLabel("First Name: ");
        firstNameLabel.setBounds(10, 18, 81, 33);
        namePanel.add(firstNameLabel);

        JLabel lastNameLabel = new JLabel("Last Name: ");
        lastNameLabel.setBounds(10, 62, 89, 33);
        namePanel.add(lastNameLabel);

        firstNameTextField = new JTextField();
        firstNameTextField.setBounds(79, 24, 155, 20);
        namePanel.add(firstNameTextField);
        firstNameTextField.setColumns(10);

        lastNameTextField = new JTextField();
        lastNameTextField.setColumns(10);
        lastNameTextField.setBounds(79, 68, 155, 20);
        namePanel.add(lastNameTextField);

        JPanel languagesPanel = new JPanel();
        languagesPanel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Languages", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0)));
        languagesPanel.setBounds(10, 128, 414, 122);
        contentPane.add(languagesPanel);
        languagesPanel.setLayout(null);

        javaCheckBox = new JCheckBox("Java");

        javaCheckBox.setBounds(6, 20, 97, 23);
        languagesPanel.add(javaCheckBox);

        cCheckBox = new JCheckBox("C");

        cCheckBox.setBounds(6, 46, 97, 23);
        languagesPanel.add(cCheckBox);

        c2CheckBox = new JCheckBox("C++");

        c2CheckBox.setBounds(6, 72, 97, 23);
        languagesPanel.add(c2CheckBox);

        phpCheckBox = new JCheckBox("PHP");

        phpCheckBox.setBounds(117, 20, 97, 23);
        languagesPanel.add(phpCheckBox);

        pythonCheckBox = new JCheckBox("Python");

        pythonCheckBox.setBounds(117, 46, 97, 23);
        languagesPanel.add(pythonCheckBox);

        htmlCheckBox = new JCheckBox("HTML");

        htmlCheckBox.setBounds(117, 72, 97, 23);
        languagesPanel.add(htmlCheckBox);

        JButton submitUserButton = new JButton("Submit User");
        submitUserButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {


                System.out.println("Applicant Report:");
                System.out.println();
                System.out.println("First Name: " + firstNameTextField.getText() + "    Last Name: " + lastNameTextField.getText());
                System.out.println();
                System.out.println("Languages known: ");

                if(javaCheckBox.isSelected() == true){
                System.out.println("Java");
                }

                if(cCheckBox.isSelected() == true){
                System.out.println("C");
                }

                if(c2CheckBox.isSelected() == true){
                System.out.println("C++");
                }

                if(phpCheckBox.isSelected() == true){
                System.out.println("PHP");
                }

                if(pythonCheckBox.isSelected() == true){
                System.out.println("Python");
                }

                if(htmlCheckBox.isSelected() == true){
                System.out.println("HTML");
                }

                System.out.println("");
                System.out.println("Languages not known: ");

                if(javaCheckBox.isSelected() == false){
                    System.out.println("Java");
                    }

                if(cCheckBox.isSelected() == false){
                    System.out.println("C");
                    }

                if(c2CheckBox.isSelected() == false){
                    System.out.println("C++");
                    }

                if(phpCheckBox.isSelected() == false){
                    System.out.println("PHP");
                    }

                if(pythonCheckBox.isSelected() == false){
                    System.out.println("Python");
                    }

                if(htmlCheckBox.isSelected() == false){
                    System.out.println("HTML");
                    }

                resetPanels();

            }
        });
        submitUserButton.setBounds(220, 46, 184, 23);
        languagesPanel.add(submitUserButton);
    }

    public void resetPanels(){
        firstNameTextField.setText("");
        lastNameTextField.setText("");
        javaCheckBox.setSelected(false);
        cCheckBox.setSelected(false);
        c2CheckBox.setSelected(false);
        phpCheckBox.setSelected(false);
        pythonCheckBox.setSelected(false);
        htmlCheckBox.setSelected(false);

    }
}

谢谢你抽出时间。

共有1个答案

瞿文柏
2023-03-14

所以,这里的问题是你总是给“report.txt”写信。每次运行代码时,都在覆盖它。可悲的是,处理这个问题有点麻烦,因为(据我所知)没有简单的方法来存储跨会话写入的内容,但有几种方法可以做到这一点。这是2:

1)创建运行库名称。您可以执行以下操作:

String name = "report";
int count = 1;
if(new File(name + ".txt").exists()) {
    while(new File(name + count + ".txt").exists()) {
        count++;
    }
    name += "" + count;
}
name += ".txt";

我不确定+count之前是否需要”,但我将其放在需要将count强制转换为字符串的情况下。

 类似资料:
  • 每次我在Vs Code中创建一个新文件时,都会出现一个无标题的文件,除非我保存文件,否则我无法更改文件的扩展名。有没有一种方法可以更改文件的名称和扩展名,而不必先保存它?我看到有人在不保存文件的情况下重命名文件和扩展名。这就是为什么我想知道怎么做。

  • 我已经添加了一个actionlistener到一个jmenuproject,它调用一个类,该类读取一个excel文件并在一个jframe中打开一个jgraph。我还添加了另一个actionlistener到不同的jmenuproject,为相同的exel文件调用相同的类,但不同的excel表(不同的int参数)。然而,当我运行我的主框架时,我点击菜单项,我一次只能打开其中一个。我必须关上一个来打开

  • 问题内容: 我想重新打开一个文件。我在输入流中有一个文件。我尝试使用Scanner和BufferedReader。但是使用close()方法关闭文件后,我无法再次打开该文件。请帮助如何再次打开文件。我写了下面的代码: 问题答案: 流,读取器,写入器,套接字或任何其他资源关闭后,您将无法再次打开它。 如果要多次读取文件,则需要具有文件名。

  • 问题内容: 我有一个脚本读取文件,然后根据该文件完成测试,但是我遇到了一个问题,因为一个小时后文件会重新加载,并且无法在该时间点或之后重新读取该脚本。 所以: 获取要读取的新文件 读取文件 执行文件测试 获取要读取的新文件(具有相同的名称-但如果它是解决方案的一部分,则可以更改) 读取新文件 对新文件执行相同的测试 谁能建议一种使Python重新读取文件的方法? 问题答案: 要么到文件开头 或再次

  • 我有一个jobIntentService创建一个文件以便在其中添加一些文本,但我得到错误。我不知道我做错了什么...下面是我的代码: 谢谢你的帮助!

  • 我写了这个程序,它以n和k为输入,然后以数组A[n]为输入。程序必须以数组a中小于k且为奇数的不同整数的总数no给出输出。但是这个程序的每一个输入都产生0作为输出。