读书人

createTempFile名字有关问题

发布时间: 2012-02-07 17:45:37 作者: rapoo

createTempFile名字问题
很简单的一个复制文本的程序,每次生成的文件总有几个数字后缀,请问这个后缀是怎么出来的?createTempFile()方法随机产生的吗?值大小可以进行控制吗?谢谢

Java code
    public static void main(String[] args) throws IOException{        File f = new File("F:/", "case.txt");        FileInputStream fis = new FileInputStream(f);        byte[] b = new byte[(int)f.length()];        System.out.println(f.length());        fis.read(b);        File fi = f.createTempFile("CopyNameClass", ".java", new File("f:/"));        FileOutputStream fou = new FileOutputStream(fi);        fou.write(b);        fou.close();        fis.close();            }

运行了三次的文件名:
CopyNameClass42847.java
CopyNameClass29564.java
CopyNameClass58792.java

[解决办法]
Java code
//java.io.File private static File generateFile(String prefix, String suffix, File dir)    throws IOException    {    if (counter == -1) {        counter = new Random().nextInt() & 0xffff;    }    counter++;    return new File(dir, prefix + Integer.toString(counter) + suffix);    }
[解决办法]
这是因为你调用的File.createTempFile()这个API,这个本来就是生成临时文件的,生成之后最后一般要删除,所以生成文件名称JVM有个标记

如果你不想有这个,就不应该调用上面的API,改成下面的
Java code
import java.io.*;public class FileWriterDemo {    public static void main(String[] args) throws IOException{           File f = new File("F:/", "case.txt");           FileInputStream fis = new FileInputStream(f);           byte[] b = new byte[(int)f.length()];           System.out.println(f.length());           fis.read(b);//           File fi = f.createTempFile("CopyNameClass", ".java", new File("f:/"));           File fi = new File("F:/CopyNameClass.txt");           FileOutputStream fou = new FileOutputStream(fi);           fou.write(b);           fou.close();           fis.close();       }    } 

读书人网 >J2SE开发

热点推荐