Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,使用数据和时间创建文件名_Java_File_Date_Time - Fatal编程技术网

Java,使用数据和时间创建文件名

Java,使用数据和时间创建文件名,java,file,date,time,Java,File,Date,Time,我试图创建一个文件名,它使用另一个类的日期和时间来命名它,问题是这个类经常被调用,当它是一个新文件时被创建。我只想创建一次文件,然后一直写入它。我不知道怎么做,有可能做到吗 非常感谢您提前提供的帮助 public void fileOutputToFile(String hex) throws Exception{ dateAndTime dat = new dateAndTime(); String date = dat.currentDateAndTime();

我试图创建一个文件名,它使用另一个类的日期和时间来命名它,问题是这个类经常被调用,当它是一个新文件时被创建。我只想创建一次文件,然后一直写入它。我不知道怎么做,有可能做到吗

非常感谢您提前提供的帮助

public void fileOutputToFile(String hex) throws Exception{

    dateAndTime dat = new dateAndTime();
    String date = dat.currentDateAndTime();

    String fileInfo = hex;
    String fileName = (date+".tsv");

    try{
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fileName, true)));
        out.print(fileInfo);
        out.print("\t");
        out.close();
    }catch (IOException e){
    }
}

在第一次调用时,可以将文件名存储为类的成员

您可以使用FileWriter构造函数在后续调用时附加到文件:

 public FileWriter( String fileName,
                    boolean append)

如果您经常写入,另一种方法是保持文件打开,将PrintWriter存储为成员。但是,这可能会阻止在写入之间与文件进行某些外部交互。

在第一次调用时,您可以将文件名存储为类的成员

您可以使用FileWriter构造函数在后续调用时附加到文件:

 public FileWriter( String fileName,
                    boolean append)

如果您经常写入,另一种方法是保持文件打开,将PrintWriter存储为成员。但是,这可能会阻止在写入之间与文件进行某些外部交互。

使用类似于
SimpleDateFormat
的日期格式化程序将日期格式化为字符串,例如“yyy”以生成文件2011.tsv。请注意,这需要返回一个
Date
对象

如果不想使用基于日期的文件,请将文件名存储在某个位置。但是,为什么您首先要使用日期作为文件名呢


编辑:对于每小时一个新文件,请使用以下格式:
yyyy-MM-dd_HH
(例如,将生成2011-03-29_17.tsv)

使用类似于
SimpleDateFormat
的日期格式化程序将日期格式化为字符串,例如“yyy”以生成文件2011.tsv。请注意,这需要返回一个
Date
对象

如果不想使用基于日期的文件,请将文件名存储在某个位置。但是,为什么您首先要使用日期作为文件名呢


编辑:对于每小时一个新文件,请使用以下格式:
yyyy-MM-dd_HH
(例如,将生成2011-03-29_17.tsv)

您能在会话中保存文件名吗?如果文件名存在于会话中,请使用其他方法从其他类别创建它。

您可以在会话中保存文件名吗?如果文件名存在于会话中,请使用其他方法从其他类别创建它。

单独使用时间的问题是,您仍然可以同时创建多个创建

您可以执行以下操作

// not thread safe.
private static final DateFormat DF = new SimpleDateFormat("yyyyMMdd_HHmmss_SSS")

File file;
do {
    file = new File(DF.format(new Date())+".tsv");
} while(!file.createNewFile());
FileUtils.writeStringToFile(file, hex+"\t");

另一个问题是,每次更新时都会给文件起一个新名称。如果您想保留相同的文件名,则需要使用不同的惰性初始化方法来设置该文件名。仅使用时间的问题是,您仍然可以同时创建多个创建

您可以执行以下操作

// not thread safe.
private static final DateFormat DF = new SimpleDateFormat("yyyyMMdd_HHmmss_SSS")

File file;
do {
    file = new File(DF.format(new Date())+".tsv");
} while(!file.createNewFile());
FileUtils.writeStringToFile(file, hex+"\t");

另一个问题是,每次更新时都会给文件起一个新名称。如果您想保留相同的文件名,则需要使用不同的惰性初始化方法设置此名称,从字段初始化值。

为了避免每次客户端应用程序调用方法
fileOutputToFile()
时创建具有新日期和时间的新文件,将所有行向上移动到构造函数中,包括创建,以便构造函数只打开文件一次,方法
fileOutputToFile()
fileInfo
附加到输出流中

确保添加一个方法
close()
,该方法通过调用关闭
PrintWriter


为了避免每次客户端应用程序调用方法
fileOutputToFile()
时创建一个具有新日期和时间的新文件,请将所有行向上移动到构造函数中,包括创建到构造函数中,以便构造函数只打开文件一次,方法
fileOutputToFile()
fileInfo
追加到输出流

确保添加一个方法
close()
,该方法通过调用关闭
PrintWriter


但是我也想有时间,所以每次程序运行时都会创建一个唯一的文件:)不,你也可以加上时间。查看一下
simpleDataFormat
Javadoc,但我也想知道时间,因此每次运行程序时都会创建一个唯一的文件:)不,你也可以加上时间。看看
SimpleDateFormat
JavaDocHow我会怎么做,新手。你有什么我可以学习的例子吗?:)他不是已经这么做了吗?(
new PrintWriter(new BufferedWriter(new FileWriter(fileName,true)))
)@Tom-您可以在方法外部声明字段,但在包含的类内部声明字段。如果每个调用使用相同的对象,则所有调用都可以访问相同的字段。Oracle Java教程的这一页介绍了类--。新手,你看,我该怎么做呢。你有什么我可以学习的例子吗?:)他不是已经这么做了吗?(
new PrintWriter(new BufferedWriter(new FileWriter(fileName,true)))
)@Tom-您可以在方法外部声明字段,但在包含的类内部声明字段。如果每个调用使用相同的对象,则所有调用都可以访问相同的字段。Oracle Java教程中的这一页介绍了类--。您在大约三周前问了同样的问题:。您应该继续,而不是创建新问题。
fileOutputToFile
所属的类的名称是什么?您应该在此类的构造函数中创建该文件。请参阅下面我的答案。您在大约三周前提出了相同的问题:。您应该继续,而不是创建新问题。
fileOutputToFile
所属的类的名称是什么?您应该在此类的构造函数中创建该文件。见下面我的答案。