【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 ...
随机推荐
- try{}catch(e){}不能捕获到异常
只能捕获到ReferenceError异常,I don't know why. try{ aa();//这是一个未被定义的方法 }catch(e){ if(e instanceof Reference ...
- Jmeter之http性能测试实战 非GUI模式压测 NON-GUI模式 结果解析TPS——干货(十一)
性能测试计划 性能测试用例 录制脚本 性能测试结果 性能测试报告 性能测试监控报告 准备工作 从脚本已录制成功之后开始进行压测 安装Jmeter拓展插件 查看 Transactions per Sec ...
- c# Char && string
char 支持的方法 字符串 声明字符串 String str = [null]; 可以用此方法声明一个空字符串 连接字符串 str +"" + str1; 比较两个字符串 C ...
- 本地工程引入maven工程的配置方式
一.准备 IDE: IntelliJ IDEA 2016.3.1 maven: 3.5.2 JDK: 1.8 操作系统: Window 7 二.配置 1. maven 3.5 下载地址:http:// ...
- Python学习笔记(三): 收集参数
如下代码: >>>def print_params(title,*params) print title print params >>>print_params( ...
- setinIerval和setTimeout的区别?
setTimeout和setInterval的使用 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTimeout和setIn ...
- 51NOD 1584 加权约数和 [莫比乌斯反演 转化 Trick]
1584 加权约数和 题意:求\(\sum_{i=1}^{N} \sum_{j=1}^{N} {\max(i,j)\cdot \sigma(i\cdot j)}\) 多组数据\(n \le 10^6, ...
- 基于Appium1.6.X的WebDriverAgent编译、安装
转自:http://www.cnblogs.com/baconLiu/p/6861431.html tips:WebDriverAgent是Appium1.6.3以后版本新添加的模块,为了让appiu ...
- dedecms在任意页面调用任意栏目文章
dedecms在任意页面调用任意栏目文章,我们用arclist标签即可实现.如果是调用多个栏目文章可以给typeid多个值. 我们以调用ID为1和ID为30的两个栏目下5篇文章为例: {dede:ar ...
- css里面如何设置body背景图片满屏
@{ Layout = null; ViewBag.Title = "Login Page";} <!DOCTYPE html> <html>& ...