jfilechooser,如何将文件名写入文本文件

时间:2014-04-06 10:29:07

标签: java swing file-io jfilechooser

我非常感谢你帮助解决这个问题。 在我的项目中,我有一项任务要做。以下是涉及的步骤:

  1. 使用jfilechooser从磁盘中选择图像文件,并将图像附加到表单中的标签。 (直截了当)
  2. 我需要使用来自该表单中某个文本字段的isbn字符串创建一个文件名文本文件。 (我正在创建一本书的实例,有isbn,title,au_name等)
  3. 在这个文本文档中,我需要编写该图像的路径和文件名。例如h:\ workplace \ isbn1234.txt
  4. 这应该在一种方法中发生。

    下一步将创建另一个方法,该方法将使用创建的txt文件(由isbn string找到)并将图像加载到所有相关表单。 (但我还没有)

    这里到目前为止我做了什么,但它一团糟......

    private void addPhotoButtonActionPerformed(java.awt.event.ActionEvent evt) 
    
     {
            final JFileChooser fc = new JFileChooser();
            fc.setCurrentDirectory(new File("H:\\java"));
                if (evt.getSource() == addPhotoButton) {            
                    int returnVal = fc.showOpenDialog(this);
                    if ( returnVal== JFileChooser.APPROVE_OPTION) {                 
                     java.io.File file = fc.getSelectedFile( );
                     String s = file.toString( );
                     String file_name = file.getName();
                     photoLabel.setIcon(new ImageIcon(file_name));
                     try(Scanner input = new Scanner(new FileInputStream (file_name)); 
                             PrintWriter outputStream = new PrintWriter(new FileOutputStream("files/" + isbnTxtField.getText() + ".txt" ))){
                     String line = "";
                     while (input.hasNext()) {
                         line = input.nextLine();
                         outputStream.println(line);
                         input.next();
                         }
                        }catch (FileNotFoundException e){
                            System.out.println("problem opening files.");
                            System.exit(0);}}}}
    

    这是我想出的解决1-3个步骤的代码:

    private void addPhotoButtonActionPerformed(java.awt.event.ActionEvent evt) 
     {
            final JFileChooser fc = new JFileChooser();
            fc.setCurrentDirectory(new File("H:\\java"));
                if (evt.getSource() == addPhotoButton) {            
                    int returnVal = fc.showOpenDialog(this);
    
                    if ( returnVal== JFileChooser.APPROVE_OPTION) {                 
                     java.io.File file = fc.getSelectedFile( );
                     try{
                         // Load image to label
                         img = ImageIO.read(file);
                         ImageIcon icon=new ImageIcon(img);
                         photoLabel.setIcon(icon);
                         Dimension imageSize = new Dimension(icon.getIconWidth(),icon.getIconHeight());
                         photoLabel.setPreferredSize(imageSize);
                         photoLabel.revalidate();
                         photoLabel.repaint();
                         // create textfile with textfield name
                        String file_in =fc.getSelectedFile().getParent();
                            System.out.println(file_in);
                            String fileName =(file_in+ "\\" +isbnTxtField.getText() + ".txt");
                            System.out.println(fileName);
                            File textFile = new File(fileName);
    
                             if (!textFile.exists()) {
                                 textFile.createNewFile();
                                }
    
                            FileWriter fw = new FileWriter(textFile.getAbsoluteFile()); 
                            BufferedWriter bw = new BufferedWriter(fw);
                             bw.write(fileName);
                             bw.close();
    
                        }catch (IOException e){
                            System.out.println("problem opening files.");
                            System.exit(0);}}}}
    

1 个答案:

答案 0 :(得分:0)

要创建文本文件,您可以使用FileWriterBufferedWriter的组合,如下所示:

package com.mkyong;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFileExample {
    public static void main(String[] args) {
        try {

            String content = "This is the content to write into file";

            File file = new File("/users/mkyong/filename.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();
        }
    }
}

取自here

如果您有一个名为JTextField的{​​{1}},则可以使用foo获取其文字。

您可以使用foo.getText()获取绝对路径,您可以使用fc.getSelectedFile().getAbsolutePath()

获取文件的名称

我希望这会有所帮助。