使用文件流创建File文件和目录以及其他的一些操作
我们创建文件时可以直接通过File f=new File(path)来创建一个文件对象,然后再通过 f.createNewFile() 就创建出来了一个文件。比如设置 path 为 C:\Users\wcl\Desktop\demo.txt 就可以在桌面上创建一个 demo.txt 文件。注意这里要try/catch。
try {
String path = "C://Users/wcl/Desktop/demo.txt";
File f = new File(path);
f.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如果你的path里还包含了未创建的文件夹目录,比如 path 为 C:\\Users\wcl\Desktop\data\demo.txt 则会报错,提示‘’系统找不到指定的路径‘’。,因为这里的 data 文件夹不存在。
这时候我们可以先创建文件夹再创建文件,创建文件夹可以使用f.mkdir()方法,如果你想创建一个多级文件夹,则可以用f.mkdirs()方法创建。
try {
String path = "C://Users/wcl/Desktop/data/demo.txt";
File f = new File(path);
if(!f.exists()){
f.mkdirs();
}
f.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我这里写的path仍然为之前的path,执行上述的代码之后,我们会在桌面上创建出来一个data文件夹,打开文件夹后,会看到里面还有一个名为demo.txt的文件夹。
这不是我们想要的结果,因为我们想要的是data文件夹里有的是demo.txt文件,那么我们可以结合f.mkdirs()和f.createNewFile()两个方法来创建:
try {
String path = "C://Users/wcl/Desktop/data/demo.txt";
File f = new File(path);
if(!f.getParentFile().exists())
f.getParentFile().mkdirs();if( !f.exists() ){
f.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
上面的代码先是通过f.getParentFile() 来获取到上一级的文件夹,也就是data文件夹,通过f.getParentFile().exists()来判断文件夹是否存在,如果不存在则创建 data 目录(文件夹),同时创建 demo.txt 文件。如果目录(文件夹)已存在,则进行第二次判断,判断目录文件中是否已存在 demo.txt 文件,如果存在则不操作,如果不存在就创建。这样目录和文件夹就都创建好了。
附:
1.创建临时文件
File f = File.createTempFile(“text”, "txt");
createTempFile()里面传入两个参数,第一个为临时文件的前缀,第二个为后缀。
2.遍历文件
String path="...";
File f=new File(path);
File []files = f.listFiles();
for(File file:files){
System.out.println(file.getAbsolutePath());
}
3.关于路径分隔符:
因为不同系统的路径分隔符不一样,故可以在java中使用 File.separator 作为目录分隔符
比如之前的 path 路径就可以写成
String path = "C:"+File.separator+"Users"+File.separator+"wcl"+File.separator+"Desktop"+File.separator+"data"+File.separator+"demo.txt";
使用文件流创建File文件和目录以及其他的一些操作的更多相关文章
- C# Path类 FileStream(文件流) 与 File(文件) 读取的区别
1.采用文件流读取数据是一点一点从文件中读取数据对内存的压力相对较小;而采用文件读取数据是一下全部读取过来对内存造成的压力相对较大 2.File读取: string str = @"E:\Q ...
- C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭
迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...
- Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】
File(文件)类 File类用于封装一个路径,该路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径 File类内部封装的路径可以指向一个文件,也可以指向一个目录,在使用File ...
- Java笔记(二十七)……IO流中 File文件对象与Properties类
File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果 ...
- Java IO流中 File文件对象与Properties类(四)
File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果 ...
- js实现使用文件流下载csv文件
1. 理解Blob对象 在Blob对象出现之前,在javascript中一直没有比较好的方式处理二进制文件,自从有了Blob了,我们就可以使用它操作二进制数据了.现在我们开始来理解下Bolb对象及它的 ...
- C++文件流类与文件流对象
文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...
- pdf文件流生成pdf文件
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Code.Login Starr_mode ...
- [转]从minio中读取文件流进行下载文件
本文转自:https://blog.csdn.net/ZHANGLIZENG/article/details/82892678 一.获取Minio连接 public static String ...
随机推荐
- jsp中include的两种用法
JSP中的include的两种用法 1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用 ...
- axis2--生成的wsdl文件方法的参数问题
我是一个使用axis2的新手,发现一个问题: * axis2生成的wsdl文件中关于提供服务的方法,其参数名称丢失,会变成args0 * , 原因: axis2 无法从java字节码中获取关于方法签名 ...
- 《新标准C++程序设计》4.5(C++学习笔记15)
实例:长度可变的整型数组类 int main() { //要编写可变长整型数组类,使之能如下使用: CArray a; //开始里的数组是空的 ; i < ; ++i) a.push_back( ...
- cmd命令打开本地*.db数据文件的一些坑
昨天刚看了下sqlite数据库,用的是cmd窗口 写的,建了几个表,今天在次打开,发现.问题有点小多啊.. 我也不知道我的数据库名字后面为啥会带 (“ : ”) 下面是我的数据文件: 刚开始看了下, ...
- 响应式布局rem的使用
在如今移动端,响应式布局的时代,用rem作为单位已经是非常普及的一门小技巧了..rem的单位根据html的font-size来进行换算! 1.rem的兼容性: 如下图所示IE9以上就支持了rem这个属 ...
- C#最小化到托盘+双击托盘恢复+禁止运行多个该程序
托盘程序的制作: 1.添加notifyIcon控件,并添加Icon,否则托盘没有图标(托盘右键菜单也可直接在属性里添加):2.响应Form的Resize或SizeChanged消息: // Hide ...
- Django(二) 模板:基本使用、模板语法、模板继承
一.模板的使用实战 接:https://blog.csdn.net/u010132177/article/details/103788677 参考:https://docs.djangoproject ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-move
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- CF97B Superset超级集合
CF97B Superset 这题主要是构造难想.看看数据范围发现连\(O(n^2)\)都被卡了,然后 考试的名称提醒我 想到了分治. 坐标按横坐标为关键字排序后找中间的点进行分治不是点分治qwq. ...
- HTML学习第二天
HTML学习第二天 今天学的比较少,有些乱,先只写一个知识点 三种样式表插入方式 外部样式表: <link rel="stylesheet" type="text/ ...