我可以让我的用户自己命名文本文件吗?

时间:2014-12-24 07:10:52

标签: java

通常我们编写文件writer命令,提供文件路径以及用户文本文件的名称。 示例:创建分配文本文件

FileWriter writer = new FileWriter(".......\assignment");

但是我的用户可以自己命名文本文件吗?

因为我的程序需要让讲师输入关于作业的关键阅读的书目详细信息,所以讲师可以通过名称和作业来命名文本文件。

3 个答案:

答案 0 :(得分:2)

使用try-with-resources,您可以将提供String的用户传递给FileWriter(String)构造函数,例如

public static void main(String[] args) {
    System.out.println("Please enter a file name: ");
    Scanner scan = new Scanner(System.in);
    String str = scan.next();
    try (FileWriter writer = new FileWriter(str)) {

    } catch (IOException e) {
        e.printStackTrace();
    }
}

修改

要在用户的主目录中使用文件,您可以使用

try (FileWriter writer = new FileWriter(new File(
        System.getProperty("user.home"), str))) {

} catch (IOException e) {
    e.printStackTrace();
}

答案 1 :(得分:1)

我猜你在编写一个控制台应用程序,而不是GUI。

在这种情况下,请使用以下内容:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class FileChooser {

    public static void main(String[] args) throws IOException {
        FileWriter writer = new FileWriter(chooseFile());
        // Use your FileWriter
    }

    public static File chooseFile() {
        String fname = null;
        File file = null;

        System.out.println("Please choose file name:");
        while (true) {
            try (Scanner in = new Scanner(System.in)) {
                // Reads a single line from the console
                fname = in.nextLine();
                file = new File(fname);
                if (!file.createNewFile()) {
                    throw new RuntimeException("File already exist");
                }
                break;
            } catch (Exception ex) {
                System.out.println(ex.getMessage() + ", please try again:");
            }
        }

        return file;
    }
}

修改

如果您正在编写Swing GUI,则可以使用JFileChooser

    //Create a file chooser
    final JFileChooser fc = new JFileChooser();
    int returnVal = fc.showSaveDialog(parentComponent);

    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fc.getSelectedFile();
    } else {
        // User canceled the file chooser.
    }

答案 2 :(得分:0)

您可以使用Scanner从键盘获取文件名。如果您使用命令提示符获取文件名,则可以使用以下代码 -

Scanner input = new Scanner(System.in);
String fileName = input.next();   

然后将'fileName'传递给PrintWriter构造函数。

PrintWriter writer = new PrintWriter(fileName);
writer.close();