繁体   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