簡體   English   中英

如何將數據保存到java中的文件中?

[英]How to save the data into File in java?

我有一個問題,就是我有一串數據,我想每次都將它保存到一個單獨的文件中。 請給我一個建議。

謝謝,vara kumar.pjd

在文件名中使用時間戳,以確保它是唯一的。 下面的示例使用以毫秒為單位的時間戳,這在大多數情況下應該足夠了。

如果您希望在 1 毫秒內可以擁有多個文件,那么您可以使用 GUID/UUID 做一些事情。 請注意,GUID/UUID 也可能導致重復,但這種機會極為罕見。

import java.io.*;
class FileWrite 
{
   public static void main(String args[])
  {
      try{
    // Create file 
    FileWriter fstream = new FileWriter(System.currentTimeMillis() + "out.txt");
        BufferedWriter out = new BufferedWriter(fstream);
    out.write("Hello Java");
    //Close the output stream
    out.close();
    }catch (Exception e){//Catch exception if any
      System.err.println("Error: " + e.getMessage());
    }
  }
}

你不需要自己計算文件名,看看File.createTempFile

來自javadoc:

在指定目錄中創建一個新的空文件,使用給定的前綴和后綴字符串生成其名稱。 如果此方法成功返回,則可以保證:

  1. 在調用此方法之前,返回的抽象路徑名表示的文件不存在,並且
  2. 此方法及其任何變體都不會在虛擬機的當前調用中再次返回相同的抽象路徑名。

此方法僅提供臨時文件功能的一部分。 要安排自動刪除由此方法創建的文件,請使用 deleteOnExit() 方法。

一個班輪。 使用 base 36 作為 id 將使文件名更短。

IOUtils.write(text, new FileWriter(Long.toString(System.currentTimeMillis(), 36)+".txt")));

http://commons.apache.org/io/

一種解決方案是,使用隨機數生成器生成隨機數。 使用此隨機數和一些文本作為文件名。 維護一份已使用名稱的列表,每次保存文件時,檢查此列表是否文件名是唯一的。

獲取具有唯一名稱的File對象的一種可能方法是:

public static File getUniqueFile(String base, String ext, int index) {
    File f = new File(String.format("%s-%03d.%s", base, index, ext));
    return f.exists() ? getUniqueFile(base, ext, index + 1) : f;
}

更新:這里是基本用法/測試用例:

    String s = "foo string\n";

    FileWriter writer = null;

    for (int i = 0; i < 10; i++) {
        File f = getUniqueFile("out", "txt", 0);
        try {
            writer = new FileWriter(f);
            writer.write(s);
            writer.close();
            writer = null;
        } catch (IOException e) {
            e.printStackTrace();
            break;
        }
    }

    if (writer != null) { try { writer.close(); } catch (Exception e) {} }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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