createNewFile()和createTempFile()区别 createnewfile失败

createNewFile()和createTempFile()区别:

为了更好地测试,我建了两个类:

1、使用createNewFile()创建一个abc.txt的文件:

Java代码
  1. public class TestFile1 {
  2. public static voidmain(String[] args) {
  3. File f1 = newFile("C:\abc.txt");
  4. try{
  5. f1.createNewFile();
  6. System.out.println(f1.getName());
  7. } catch (IOExceptione) {
  8. e.printStackTrace();
  9. }
  10. }
  11. }
public class TestFile1 {                public static void main(String[] args) {                File f1 = new File("C:\abc.txt");                try {                        f1.createNewFile();                        System.out.println(f1.getName());                } catch (IOException e) {                        e.printStackTrace();                }        }}

控制台输出:
abc.txt

2、使用createTempFile()创建一个abc.txt的文件:

Java代码
  1. public class TestFile2 {
  2. public static voidmain(String[] args) {
  3. File f1 = newFile("C:");
  4. File f2 = null;
  5. try{
  6. f2 = File.createTempFile("abc", ".txt", f1);
  7. System.out.println(f2.getName());
  8. } catch (IOExceptione) {
  9. e.printStackTrace();
  10. }
  11. }
  12. }
public class TestFile2 {                public static void main(String[] args) {                File f1 = new File("C:");                File f2 = null;                try {                        f2 = File.createTempFile("abc", ".txt", f1);                        System.out.println(f2.getName());                } catch (IOException e) {                        e.printStackTrace();                }        }}


createNewFile()和createTempFile()区别 createnewfile失败
控制台输出:

但是我查看了指定路径,生成了

abc482578709 1196303263.txt文件,每一次执行,都能生成不同的文件,但中间的数字都是19位,我查看了Java的File源代码,按住Ctrl+鼠标左击,进入File.class,看到有

Java代码
  1. private static File generateFile(String prefix,String suffix, File dir)
  2. throwsIOException
  3. {
  4. long n =LazyInitialization.random.nextLong();
  5. if (n ==Long.MIN_VALUE) {
  6. n = 0;// corner case
  7. } else{
  8. n = Math.abs(n);
  9. }
  10. return new File(dir, prefix + Long.toString(n) +suffix);
  11. }
private static File generateFile(String prefix, String suffix, File dir)        throws IOException    {        long n = LazyInitialization.random.nextLong();        if (n == Long.MIN_VALUE) {            n = 0;      // corner case        } else {            n = Math.abs(n);        }        return new File(dir, prefix + Long.toString(n) + suffix);    }
Java代码
  1. public static File createTempFile(String prefix,String suffix,
  2. File directory)
  3. throwsIOException
  4. {
  5. if (prefix ==null) throw newNullPointerException();
  6. if (prefix.length()< 3)
  7. throw newIllegalArgumentException("Prefixstring too short");
  8. String s = (suffix == null) ? ".tmp" : suffix;
  9. if (directory== null){
  10. String tmpDir =LazyInitialization.temporaryDirectory();
  11. directory = newFile(tmpDir, fs.prefixLength(tmpDir));
  12. }
  13. SecurityManager sm =System.getSecurityManager();
  14. File f;
  15. do{
  16. f = generateFile(prefix, s, directory);
  17. } while(!checkAndCreate(f.getPath(), sm));
  18. returnf;
  19. }
    public static File createTempFile(String prefix, String suffix,                                      File directory)        throws IOException    {        if (prefix == null) throw new NullPointerException();        if (prefix.length() < 3)            throw new IllegalArgumentException("Prefix string too short");        String s = (suffix == null) ? ".tmp" : suffix;        if (directory == null) {            String tmpDir = LazyInitialization.temporaryDirectory();            directory = new File(tmpDir, fs.prefixLength(tmpDir));        }        SecurityManager sm = System.getSecurityManager();        File f;        do {            f = generateFile(prefix, s, directory);        } while (!checkAndCreate(f.getPath(), sm));        return f;    }

注意函数generateFile()的返回值是new File(dir, prefix + Long.toString(n) +suffix);

由此可明白为什么会生成abc4825787091196303263.txt文件了。

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/313845.html

更多阅读

手机水货和行货区别 苹果正品和行货区别

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??手机水货和行货区别水货,一般是指港行版,亚太版,甚至欧版。只是产地和销售地不同。行货,只是在中国大陆销售的大陆版。高仿,就是外形相似,但系统,软件都无法跟上,质量也很差!常用的一些方法技巧正

iphone4和iphone4s区别 iphone4和4s有什么区别

当我们翘首以盼iphone5到来的时候,等来的却是iphone4s。既然名字为4S那么肯定继承了之前的iphone4的绝大部分设计,但毕竟是新品,区别还是有的。下面就讲讲iphone4和iphone4s区别iphone4和iphone4s区别——外观篇iphone4和iphone4s区

手机3G卡与2G卡的区别 手机内存3g和2g区别

手机3G卡与2G卡的区别——简介3G手机卡与2G手机卡有什么不同,3G和2G的特点和区别又是什么呢?2G是第二代手机通信技术的简称,3G是第二代手机通信技术的简称。下面将总结一下:手机3G卡与2G卡的区别——工具/原料

电脑休眠和睡眠区别以及怎么唤醒 电脑休眠和睡眠的区别

电脑闲置的时候,除了关机之外,用户还可以考虑将电脑设为休眠或睡眠状态。与关机相比,系统具有以下休眠和睡眠区别和优点:1:不需要关闭正在进行的工作,电脑唤醒后,所有打开的程序、窗口马上恢复至休眠或睡眠之前的状态,方便用户继续

隔离霜和防晒霜有什么区别? 隔离霜和防晒霜区别

隔离霜和防晒霜有什么区别?——简介夏天到来,阳光也越来越强,隔离、防晒很重要哦。不过,还是有很多女生,分不清防晒霜和隔离霜的用途和区别,只有正确掌握、使用这两种产品,才能有效阻挡紫外线,让你更好地保护肌肤美美度过这个夏天。跟随小编

声明:《createNewFile()和createTempFile()区别 createnewfile失败》为网友吹皱一池春水分享!如侵犯到您的合法权益请联系我们删除