很简单的一个复制文本的程序,每次生成的文件总有几个数字后缀,请问这个后缀是怎么出来的?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(); } }