[英]how to create a file in a specific folder on desktop by default
我正在嘗試使用用戶輸入的數據創建文件。 但是,我希望每次用戶運行該文件時將其保存在桌面上的新文件夾中。 我怎樣才能做到這一點?
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!");
}
}
}
首先,您需要知道桌面在哪里,可以使用類似...
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
開頭的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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.