Ну, я приступил к созданию и написанию файлов на Java. Однако я не могу понять, почему мой вывод не будет писать, мой File file
не найден, потому что он создается/читается в моем основном методе, который, разумеется, находится в том же class
.Почему мой файл не добавляется?
public class EloManip {
private JFrame frame;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JLabel lblFormat;
private JTextField textField_5;
private JLabel lblCase;
private JLabel label;
//Path p5 = Paths.get(System.getProperty("user.home"),"EloManip", "EloManipCases.log");
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
String content = "This is the content to write into file";
File file = new File("https://stackoverflow.com/users/Peter/EloManipulation.txt");
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
EloManip window = new EloManip();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public EloManip() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setTitle("Elo Manipulation Case Creator by Cavasi");
/*lblFormat = new JLabel("Format");
lblFormat.setBounds(32, 180, 307, 14);
frame.getContentPane().add(lblFormat);
*/
textField = new JTextField();
textField.setBackground(new Color(255, 255, 255));
textField.setBounds(173, 34, 86, 20);
frame.getContentPane().add(textField);
textField.setColumns(10);
JLabel lblEnterName = new JLabel("Enter name:");
lblEnterName.setBounds(32, 37, 122, 14);
frame.getContentPane().add(lblEnterName);
JLabel lblEnterReason = new JLabel("Enter Reason:");
lblEnterReason.setBounds(32, 62, 104, 14);
frame.getContentPane().add(lblEnterReason);
textField_1 = new JTextField();
textField_1.setBackground(new Color(255, 255, 255));
textField_1.setBounds(173, 59, 86, 20);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);
JLabel lblEnterEvidence = new JLabel("Enter Evidence:");
lblEnterEvidence.setBounds(32, 87, 131, 14);
frame.getContentPane().add(lblEnterEvidence);
textField_2 = new JTextField();
textField_2.setBackground(new Color(255, 255, 255));
textField_2.setBounds(173, 84, 86, 20);
frame.getContentPane().add(textField_2);
textField_2.setColumns(10);
JLabel lblEnterDatemmddyy = new JLabel("Enter Date(MM/DD/YY):");
lblEnterDatemmddyy.setBounds(32, 112, 136, 14);
frame.getContentPane().add(lblEnterDatemmddyy);
textField_3 = new JTextField();
textField_3.setBackground(new Color(255, 255, 255));
textField_3.setBounds(173, 109, 86, 20);
frame.getContentPane().add(textField_3);
textField_3.setColumns(10);
JLabel lblEnterLength = new JLabel("Enter Length:");
lblEnterLength.setBounds(32, 137, 122, 14);
frame.getContentPane().add(lblEnterLength);
textField_4 = new JTextField();
textField_4.setBackground(new Color(255, 255, 255));
textField_4.setBounds(173, 134, 86, 20);
frame.getContentPane().add(textField_4);
textField_4.setColumns(10);
textField_5 = new JTextField();
textField_5.setBackground(new Color(255, 255, 255));
textField_5.setBounds(10, 207, 414, 20);
frame.getContentPane().add(textField_5);
textField_5.setColumns(10);
JButton btnNewButton = new JButton("Generate Elo Manipulation Case");
btnNewButton.setFont(new Font("Nirmala UI Semilight", Font.BOLD, 11));
btnNewButton.setForeground(Color.BLACK);
btnNewButton.setBackground(Color.GREEN);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//lblFormat.setText(textField)
//JOptionPane.showMessageDialog(null, textField.getText() + " - " + textField_1.getText() + " - " + textField_2.getText() + " " + textField_3.getText() + " [" + textField_4.getText() + "]");
textField_5.setText(textField.getText() + " - " + textField_1.getText() + " - " + textField_2.getText() + " " + textField_3.getText() + " [" + textField_4.getText() + "]");
JOptionPane.showMessageDialog(null, "Successfully created Elo Manipulation Case!");
Writer output;
output = new BufferedWriter(new FileWriter(file, true));
output.append("New Line!");
output.close();
}
});
btnNewButton.setBounds(0, 238, 434, 23);
frame.getContentPane().add(btnNewButton);
lblCase = new JLabel("Case:");
lblCase.setBounds(10, 182, 352, 14);
frame.getContentPane().add(lblCase);
label = new JLabel("");
label.setBounds(269, 11, 155, 163);
frame.getContentPane().add(label);
Image img = new ImageIcon(this.getClass().getResource("/badlionsmall.png")).getImage();
label.setIcon(new ImageIcon(img));
}
}
Файл не может быть разрешен к переменному, поскольку она создается/проверяется в моем основном методе, но мое действие, которое должно быть записано в файл .txt
не в основном методе, а скорее инициализации метод. Что я делаю?
Локальные переменные не привязаны к классу метода, в котором они появляются, они привязаны к фигурным скобкам ('{}'), которые они появляются. Если вы хотите иметь возможность использовать переменную в любом месте своего класса, вам нужно сделать его переменной класса. – azurefrog
Если у вас есть новый вопрос, задайте новый вопрос. Не перезаписывайте это. –
Как написано много раз, новый вопрос принадлежит новому сообщению, а не прилагается к нему. Вы можете создать новый вопрос, щелкнув «Задать вопрос» в верхнем правом углу. – Tom