File操作小梳理

简介: 1关于file.isFile()与file.isDirectory() 错误以为若是Directory一定是file,file不一定是Directory 更正:file和Directory是两码事.

1关于file.isFile()与file.isDirectory()
错误以为若是Directory一定是file,file不一定是Directory
更正:file和Directory是两码事.只能是file或Directory中其中一个.


2并不是说我们执行一句File f=new File("F:\\x.txt");
在本地硬盘上就生成了一个x.txt文件.而应该进行如下的
操作才可以.
File f=new File("F:\\x.txt");
 if (!f.exists()) {
    f.createNewFile();
  }
其中f.createNewFile()表示创建了一个空文件

3 对于目录应该先执行file.mkdir(s)()才可以
往里面其下存入文件.比如:
File f=new File("F:\\test\\x.txt");
  if (!f.exists()) {
     f.createNewFile();
  }
这当然要报错,因为x.txt的所在目录还不存在!!
所以应该改正为:
File f=new File("F:\\test\\x.txt");
f.getParentFile().mkdirs();
if (!f.exists()) {
   f.createNewFile();
}
同样的道理
File f=new File("F:\\test\\x.txt");
if (f.isFile()) {
   System.out.println("true");
}else{
   System.out.println("false");
}
结果为false

所以更好的实践体验,应该如下:
 File file=new File("E:\\zz\\xx\\123.txt");
 //1 首先判断其父文件是否存在,若不存在则创建

 //  不论其父路径有多复杂都会创建.
 //  比如E盘下根本就没有zz和xx
 //  但在此会按该层次创建
 if (!file.getParentFile().exists()) {
   file.getParentFile().mkdirs();
 }

 //2 再判断该文件是否存在,若不存在则创建
 if (!file.exists()) {
   try {
    file.createNewFile();
  } catch (IOException e) {
    e.printStackTrace();
   }
  }  


  
4 总结两种与File有关的两种操作思路
(1)
File f=new File("");
f.createNewFile();
然后对f操作.
这当然没有错,因为f已经被创建了

(2)file f=new File("");
然后用输入输出流进行流操作
例如:
File f=new File("F:\\test.txt");
FileOutputStream fos=new FileOutputStream(f);
String string="hello";
byte []b=string.getBytes();
fos.write(b, 0, b.length);  
疑问:
按照(1)中的思路没有执行f.createNewFile()为什么不报错???
因为输出流FileOutputStream已经做了该工作
修改例子即可知:
File f=new File("F:\\2221x.txt");
if (f.isFile()) {
   System.out.println("true1");
} else {
   System.out.println("false1");
}
FileOutputStream fos=new FileOutputStream(f);
if (f.isFile()) {
   System.out.println("true2");
} else {
   System.out.println("false2");
}
String string="hello";
byte []b=string.getBytes();
fos.write(b, 0, b.length);
输出false1,true2
即得到验证.

相关文章
|
4月前
|
存储 数据库
如何使用编程的方式,删除 CRM 文档的 attachment 数据
如何使用编程的方式,删除 CRM 文档的 attachment 数据
|
11月前
|
SQL Oracle 关系型数据库
Oralce梳理---爱了嘛
Oralce梳理---爱了嘛
|
2月前
|
API 运维
开发与运维函数问题之mapConcurrent实现与Pekko-Stream的mapAsync相似之处如何解决
开发与运维函数问题之mapConcurrent实现与Pekko-Stream的mapAsync相似之处如何解决
18 0
|
2月前
|
资源调度 前端开发 开发工具
阿里云云效操作报错合集之Node-Sass模块在构建过程中,出现报错"ENOENT: no such file or directory, scandir ",该如何处理
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
2月前
|
存储 数据库
cannot read properties of underfined (reading ‘code‘),别光知道抄,有的时候,细节就是影响全局关键,别人代码到你项目不一定100%正确,判断bug出
cannot read properties of underfined (reading ‘code‘),别光知道抄,有的时候,细节就是影响全局关键,别人代码到你项目不一定100%正确,判断bug出
|
3月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI操作报错合集之遇到报错:PANGU_FILE_NOT_FOUND?如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
28个案例问题分析---21---面向对象复用、面向对象实现、立体化权限--思想
28个案例问题分析---21---面向对象复用、面向对象实现、立体化权限--思想
60 0
|
Java Unix Linux
File 类操作深入|学习笔记
快速学习 File 类操作深入
119 0
|
SQL Oracle 关系型数据库
[20171115]关于逻辑读的疑问.txt
[20171115]关于逻辑读的疑问.txt --//有网友指出[20150209]为什么少1个逻辑读.txt,链接:http://blog.itpub.net/267265/viewspace-1430902/ --//如何验证是这样操作的.
971 0