当前位置: 代码迷 >> J2SE >> createTempFile名字有关问题
  详细解决方案

createTempFile名字有关问题

热度:89   发布时间:2016-04-24 12:17:22.0
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();       }    }