通常我们编写文件writer命令,提供文件路径以及用户文本文件的名称。 示例:创建分配文本文件
FileWriter writer = new FileWriter(".......\assignment");
但是我的用户可以自己命名文本文件吗?
因为我的程序需要让讲师输入关于作业的关键阅读的书目详细信息,所以讲师可以通过名称和作业来命名文本文件。
答案 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();