簡體   English   中英

默認情況下如何在桌面上的特定文件夾中創建文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM