我正在尝试使用用户输入的数据创建一个文件。但是,我希望每次用户运行时都将其保存在桌面上的新文件夹中。我怎么能这样做?
package my.io;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Scanner;
public class BufferReader {
public static void main(String args[]){
System.out.print("Please enter your text!!: ");
Scanner ip = new Scanner(System.in);
String text = ip.nextLine();
FileWriter fWriter = null;
BufferedWriter writer = null;
try {
fWriter = new FileWriter("text.txt");
writer = new BufferedWriter(fWriter);
writer.write(text);
writer.newLine();
writer.close();
System.err.println("Iput of " + text.length() + " characters was saved on Desktop.");
System.out.println("Text you have entered is:" + (ip.nextLine()));
} catch (Exception e) {
System.out.println("Error!");
}
}
}
答案 0 :(得分:1)
首先,您需要知道桌面的位置,您可以使用类似......
的内容File desktop = new File(System.get("user.home") + File.separator + "Desktop");
现在,显然,这适用于Windows,对于MacOS,您可以执行类似的操作,但您需要在user.home
上下文中验证位置...
现在您拥有桌面路径,您可以使用类似......
之类的东西创建一个文件夹File outputFolder = null;
do {
outputFolder = new File(desktop, new SimpleDateFormat("yyyy-MM-dd HH:mm.ss").format(new Date()));
} while (outputFolder.exists());
if (!outputFolder.mkdirs()) {
System.err.println("Failed to create output folder " + outputFolder);
}
现在,这只是创建具有第二准确度的时间戳的文件夹。给目录一个更有意义的名称可能会很好,但这归结为需要......
以下示例稍微复杂一点,这基本上列出了desktop
中的所有目录,这些目录以预定的predix
开头。
然后循环并确定最大数字后缀并使用序列中的下一个数字创建一个新目录,这意味着如果删除目录,它将不会尝试覆盖现有目录...
String prefix = "Test";
File[] folders = desktop.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isDirectory()
&& pathname.getName().startsWith(prefix);
}
});
System.out.println(folders.length);
int max = 0;
for (File folder : folders) {
String name = folder.getName();
name = name.substring(prefix.length()).trim();
System.out.println(name);
max = Math.max(max, Integer.parseInt(name));
}
max++;
String suffix = String.format("%04d", max);
File output = new File(desktop, prefix + " " + suffix);
System.out.println(output);
if (!output.exists() && !output.mkdirs()) {
System.out.println(output + " not created");
}