Java 将唯一标识符追加到文件

Java 将唯一标识符追加到文件,java,windows,Java,Windows,我是Rakesh,我正在开发一个应用程序,需要一次又一次地归档同名文件。这样压缩的文件存储在一个文件夹中。现在让我进入我想附加时间戳作为唯一标识符n的一点,这就是问题所在。当我给出任何正常的int值或任何类似的值时,它都可以正常工作。它仅在日期格式的情况下引发异常。我在附加代码让你通过。请通读代码,让我知道哪里出了问题 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; imp

我是Rakesh,我正在开发一个应用程序,需要一次又一次地归档同名文件。这样压缩的文件存储在一个文件夹中。现在让我进入我想附加时间戳作为唯一标识符n的一点,这就是问题所在。当我给出任何正常的int值或任何类似的值时,它都可以正常工作。它仅在日期格式的情况下引发异常。我在附加代码让你通过。请通读代码,让我知道哪里出了问题

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Files 
{
public static void main(String args[])throws Exception
{   
    byte[] buf = new byte[1024];
    int len;
    int i=1;
    DateFormat df = new SimpleDateFormat("hh:mm:ss");  
    df.setTimeZone(TimeZone.getTimeZone("PST"));  
    String t=df.format(new Date());
    FileInputStream fis=new FileInputStream("e:/Xxx.java");
    File f=File.createTempFile("aaaa"+t, ".zip", new File("D:/"));
    FileOutputStream fos=new FileOutputStream(f);
    ZipOutputStream zip=new ZipOutputStream(fos);
    zip.putNextEntry(new ZipEntry( "D:/aaa"+t+".zip"));
     while ((len = fis.read(buf)) > 0) 
     {
            zip.write(buf, 0, len);

     }
    System.out.println("done");
}

}
异常消息:

Exception in thread "main" java.io.IOException: The parameter is incorrect
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.checkAndCreate(File.java:1704)
at java.io.File.createTempFile(File.java:1792)
at Files.main(Files.java:21)

根据,不能在Windows文件名中使用“:”。将“:”改为“-”(或完全去掉),你应该会没事的。

你需要将格式化日期中的冒号替换为合法字符,如破折号(“-”)。

DateFormat df=new SimpleDateFormat(“hh mm ss”)

文件名中的冒号字符(:,如hh:mm:ss)合法吗?@Pete:不适用于Windows,在Linux(和其他UnixOID)中有效。