【java学习笔记】文件操作
文件操作 java.io.File
①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据)
1.单个文件
创建单个文件,查看属性,删除单个文件。
package tmp; import java.io.File;
import java.io.IOException; public class File_createNewFile {
public static void main(String[] args) throws IOException { //在当前目录下(当前项目的根目录)创建一个文件test.txt
File file = new File("."+File.separator+"test.txt"); if(!file.exists()){
file.createNewFile();
System.out.println("文件创建完毕!");
}else{
System.out.println("该文件已存在!");
} System.out.println(file.getName()); //获取文件名 String
System.out.println(file.length()); //获取文件长度 long ,单位:字节
System.out.println(file.canRead()); //是否可读
System.out.println(file.canWrite()); //是否可写
System.out.println(file.isAbsolute()); //是否是一个绝对路径
System.out.println(file.isFile()); //是否是文件
System.out.println(file.isDirectory());//是否是目录
System.out.println(file.isHidden()); //是否隐藏
System.out.println(file.exists()); //是否存在 File[] files = file.listFiles(); //获取指定路径下子目录和子文件
for (File f : files) {
System.out.println(f);
} File file2 = new File("."+File.separator+"test2.txt");
file.renameTo(file2); //重命名/剪切 file.delete(); //删除文件
System.out.println(file.exists()); //文件不存在了 String path = file.getAbsolutePath();//获取绝对路径
System.out.println(path);
}
}
2.一级目录
一级目录的创建,删除。
import java.io.File; // 使用File创建一个目录
public class File_mkdir {
public static void main(String[] args) {
//在当前目录下创建一个目录:demo
// File dir = new File("a/b/demo.txt"); // 只有当a/b两级目录存在时可创建,否则不行。
File dir = new File("demo.txt");
if(!dir.exists()){
dir.mkdir();
System.out.println("目录已创建");
}else{
System.out.println("该目录已存在!");
}
dir.delete(); // 如果删除的是目录,并且目录下有子文件或者子目录则会删除失败。
System.out.println(dir.exists());
}
}
3.多级目录
多级目录的创建,删除。
import java.io.File; //创建一个多级目录
public class File_mkdirs {
public static void main(String[] args) {
//在当前目录下创建目录:a/b/c/d/e/f
File dir = new File("a"+File.separator+"b"+File.separator+
"c"+File.separator+"d"+File.separator+"e"+File.separator+"f"); if(!dir.exists()){
//mkdirs在创建当前File表示的目录时会将所有不存在的父目录一同创建出来。而mkdir不具备这样的功能.
dir.mkdirs();
System.out.println("目录已创建!");
}else{
System.out.println("目录已存在!");
} delete(new File("a"));
} //删除file文件或者file目录及其所有文件
public static void delete(File file){
if(file.isDirectory()){
//将该目录子项全部清除
File[] subs = file.listFiles();
for(int i=0;i<subs.length;i++){
delete(subs[i]);
}
}
file.delete();
}
}
4.文件过滤器
import java.io.File; //获取一个目录中的所有子项
public class File_listFiles {
public static void main(String[] args) { File dir = new File(".");
/*
* boolean isFile()
* 判断当前File表示的是否为文件
*
* boolean isDirectory()
* 判断当前File表示的是否为目录
*/
//判断是否为目录
if(dir.isDirectory()){
/*
* File[] listFiles()
* 返回的数组中每个元素为该File表示的目录中的一个子项
*/
File[] subs = dir.listFiles();
for(int i = 0; i < subs.length; i++){
System.out.println(subs[i].getName());
}
} }
}
listFiles
import java.io.File;
import java.io.FileFilter; //File提供了一个重载的listFiles方法,允许传入一个FileFilter(文件过滤器),
//然后将当前File表示的目录中满足该过滤器要求的子项返回.
public class FileFilterDemo1 {
public static void main(String[] args) {
//获取当前目录中所有名字以"."开头 的子项
File dir = new File(".");
FileFilter filter = new FileFilter(){
//添加过滤条件,只要认为参数给定的file满足要求,则返回true即可
public boolean accept(File file) {
String name = file.getName();
System.out.println("正在过滤:"+name);
return name.startsWith(".");
} };
File[] subs = dir.listFiles(filter);
for(int i = 0; i < subs.length; i++){
System.out.println(subs[i].getName());
}
}
}
import java.io.File;
import java.io.FileFilter; public class FileFilterDemo2 {
public static void main(String[] args) {
File file = new File("D:\\"); // FileFilter---文件过滤器
// 只获取D盘下的子文件
File[] fs = file.listFiles(new FileFilter() {
// 指定筛选规则
@Override
public boolean accept(File pathname) {
return pathname.isFile();
}
});
for(File f : fs){
System.out.println(f);
}
}
}
FileFilterDemo2
5.文件名过滤器
import java.io.File;
import java.io.FilenameFilter; public class FileNameFilterDemo {
public static void main(String[] args) { File file = new File("D:\\"); // FilenameFilter---文件名过滤器
File[] fs = file.listFiles(new FilenameFilter() { @Override
public boolean accept(File dir, String name) {
return name.matches(".*[nN].*");
}
});
for (File f : fs) {
System.out.println(f);
}
}
}
其它文件操作练习:
1.统计java文件的个数
import java.io.File; public class FileCountJavaFile {
public static void main(String[] args) {
File dir = new File("E:\\xs_daidaicgb\\java projects\\03API\\day17");
System.out.println(countJava(dir));
}
public static int countJava(File file){
if(file == null){
return 0;
}
if(!file.isDirectory()){
if(file.getName().endsWith(".java"))
return 1;
else
return 0;
}else{
int sum = 0;
File[] fs = file.listFiles();
for(File f : fs){
sum += countJava(f);
}
return sum;
}
}
}
2.将所有pdf文件提取到D:PDF下
import java.io.File; public class FileTypeFind {
public static void main(String[] args) {
File file = new File("D:\\01javaBasic");
//将D:\\01javaBasic下的pdf文件提取到D:\\PDF\\下
getTypeFile(file,"D:\\PDF\\","pdf");
System.out.println("over");
}
/**
* 将原文件中的制定类型文件,剪切到指定地址。若有重名文件自动用_数字标号。
* @param srcFile 需要操作的文件
* @param destPath 将筛选出来的文件存入destPath
* @param findType 制定类型的文件,例如pdf,txt,docx等
*/
public static void getTypeFile(File srcFile, String destPath, String findType){
if(srcFile == null){
throw new NullPointerException("文件不能为空!");
}
if(srcFile.isDirectory()){
File[] fs = srcFile.listFiles();
for(File f : fs){
if(f.isDirectory())
System.out.println(f);
getTypeFile(f,destPath,findType);
}
}else{
if(srcFile.getName().endsWith("."+findType)){
File dir = new File(destPath+srcFile.getName());
if(dir.exists()){
int count = 0;
String fileName = srcFile.getName().substring(0,srcFile.getName().lastIndexOf("."));
while(dir.exists()){
count++;
dir = new File(destPath+fileName+"_"+count+"."+findType);
}
srcFile.renameTo(new File(destPath+fileName+"_"+count+"."+findType));
}else{
srcFile.renameTo(new File(destPath+srcFile.getName()));
}
}
}
}
}
效果:
【java学习笔记】文件操作的更多相关文章
- python学习笔记:文件操作和集合(转)
转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...
- Java学习笔记--文件IO
简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...
- erlang学习笔记(文件操作)
参考这里和这里了解到的文件操作的模块有很多:kernel下有:file,stdlib下有:filelib,filename,file_sorter.(具体查看官方文档)
- python基础学习笔记——文件操作
文件操作 初始文件操作 使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了 根据打开方式的不同能够执行的操作 ...
- 03 python学习笔记-文件操作(三)
本文内容主要包括以下方面: 1. 文件操作基本认识2. 只读(r, rb)3. 只写(w, wb)4. 追加(a, ab)5. r+读写6. w+写读7. a+写读(追加写读)8. 文件的修改 一.文 ...
- C学习笔记-文件操作
文件操作大致分三步 打开文件 读写文件 关闭文件 二进制和文本模式的区别 在windows系统中,文本模式下,文件以"\r\n"代表换行.若以文本模式打开文件,并用fputs等函数 ...
- Java学习笔记——IO操作之对象序列化及反序列化
对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为 ...
- java学习笔记—第三方操作数据库包专门接收DataSource-dbutils (30)
Dbutils 操作数据第三方包.依赖数据源DataSource(DBCP|C3p0). QueryRunner – 接收DataSource|Connection,查询数据删除修改操作.返回结果. ...
- Python学习笔记——文件操作
python中,一切皆对象. 一.文件操作流程 (1)打开文件,得到一个文件句柄(对象),赋给一个对象: (2)通过文件句柄对文件进行操作: (3)关闭文件. 文件对象f通过open()函数来创建 ...
- Python3.5学习笔记-文件操作
在Python中,操作文件对象使用open函数来创建,下表列出了常用的操作file的函数: 序号 方法及描述 1.file.close() 关闭文件.关闭后文件不能再进行读写操作. 2.file.fl ...
随机推荐
- js面向对象之继承那点事儿根本就不是事
继承 说道这个继承,了解object-oriented的朋友都知道,大多oo语言都有两种,一种是接口继承(只继承方法签名):一种是实现继承(继承实际的方法) 奈何js中没有签名,因而只有实现继承,而且 ...
- shell第一篇
前两天不停的再看内核相关的内容,了解内核的形成.内核的执行流程.内核的作用,结果是舍近求远. 其实我只是想了解一下shell的工作,shell与内核有关,但并不需要我么真正去做什么,至少对于我这样额初 ...
- 浅谈GlusterFS
GlusterFS 标签(linux): 分布式文件系统 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 图片来自于官网:http://gluster.readt ...
- win10下端口被占用解决办法
调试socket通信的时候,如果程序未正常结束,重新启动会报端口被占用的错误. 一 查找被占用的端口 解决办法如下:按win+R输入cmd打开控制台,输入 netstat -ano|findstr 8 ...
- chrome disable-web-security 关闭安全策略 解决跨域
Chrome 跨域访问线上接口 时间:2016-04-21 作者:zhongxia 前后端分离之后,联调的时候就会出现问题,那就是Ajax跨域问题. 跨域问题的解决方案有很多种比如常规的 后端使用CR ...
- Spring Boot-JPA
前文我们使用SPRING INITIALIZR快速构建了一个空的Spring Boot项目,并增加web模块实现了HTTP请求. 这一篇继续在该demo的基础上,增加JPA的功能. JPA全称Java ...
- python3操作pymsql模块
pymysql是python中操作mysql的模块. 1.pymysql模块的安装 pip3 install pymysql 也可以使用pycharm这个IDE工具来安装pymysql这个模块. 2. ...
- 关于C#连接Oracle数据库 尝试加载Oracle客户端时引发BadImageFormatException 如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题
这个问题已经困扰了我快一个月了,各种百度,各种博客,可是,一个个都试过了,什么下载32位客户端,配置环境变量什么的,纯属扯犊子,开发环境win10 64位 oracle 11g r2 64位,这 ...
- JVM基础篇(一)
JVM简介 JVM(Java虚拟机)是一个虚拟的机器,在实际的计算机上通过软件模拟来实现.JVM有自己的硬件,如处理器.堆栈.寄存器等,还具有相应的指令系统. JVM包括一套字节码指令集.一组寄存器. ...
- BZOJ 4008: [HNOI2015]亚瑟王 [DP 概率 !!!]
传送门 题意: $r$轮$n$张卡牌,每一轮依次考虑每张卡牌,$p_i$概率发动造成$d_i$伤害后结束本轮或者继续考虑下一张 每张卡牌发动过之后以后都会跳过 求$r$轮之后的期望伤害 看了一节课出题 ...