[J2EE]java本地文件操作

24 篇文章 9 订阅

一、File类简介

在java中所有的事务都是对象,文件也不例外,java中使用File类表示文件(包括文件和文件夹).

二、文件的创建、删除、重命名

2.1文件创建

首先创建一个File对象f1, 传入的string参数为文件名,然后使用createNewFile()方法即可创建该文件,文件创建成功createNewFile()方法会返回true,创建失败会返回false.如果文件已经存在会创建失败,可用exists() 方法检测文件是否存在。

package ucas.file.test;

import java.io.File;
import java.io.IOException;

public class FileDemo01 {
    public static void main(String[] args) {
        File f1 = new File("Test.txt");
        try {

            if(f1.exists()){
                System.out.println("文件已存在无须创建!");
            }else{
                if (f1.createNewFile()) {
                    System.out.println("文件创建成功!");
                }else{
                    System.out.println("文件创建失败!");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

2.2文件删除

文件删除使用delete()方法。

package ucas.file.test;

import java.io.File;

public class FileDeete {
    public static void main(String[] args) {
        File f1 = new File("Test.txt");
        if (f1.exists() == false) {
            System.out.println("文件不存在,删除失败!");
        } else {

            if (f1.delete()) {
                System.out.println("删除成功!");
            }else{
                System.out.println("删除失败");
            }
        }
    }
}

2.3文件重命名

在src目录下存在一个Test.txt文本文件,修改文件名:

package ucas.file.test;

import java.io.File;
public class FileRename {
    public static void main(String[] args) {
         File f1=new File("src/Test.txt");
         File f2=new File("src/TestTwo.txt");
         f1.renameTo(f2);
    }
}

三、文件夹的创建、删除、重命名

3.1创建文件夹

创建文件夹使用mkdir()方法:

package ucas.file.test;

import java.io.File;

public class FileFolder {
    public static void main(String[] args) {
          File dir1=new File("src/Folder");
          dir1.mkdir();    
    }
}

这样就走src目录下新建了一个Folder文件夹,刷新后可见.
创建文件夹时先判断是否存在,这样更加规范:

package ucas.file.test;

import java.io.File;

public class FileFolder {
    public static void main(String[] args) {
          File dir1=new File("src/Folder");

          if(dir1.exists()){
              System.out.println("文件夹已存在!");
          }else{
              if(dir1.mkdir()){               
                  System.out.println("文件夹创建成功");
              }else{
                  System.out.println("文件夹创建失败");
              }
          }

    }
}

3.2创建多级文件夹

创建含义子文件夹的文件夹使用mkdirs()函数:

File dir1=new File("Folder/one/two");
dir1.mkdirs()

3.3文件夹的删除

删除文件夹使用delete()函数,但是对于非空文件夹不能一次性删除
删除非空文件夹,可以采用递归的思想:

public static void deleteFolder(File dir) {

        File dirFile[] = dir.listFiles();
        for (int i = 0; i < dirFile.length; i++) {
            if (dirFile[i].isDirectory()) {
                deleteFolder(dirFile[i]);
            }
            dirFile[i].delete();
        }
    }

四、文件属性的读取

package ucas.file.demo;

import java.io.File;

public class FileDemo3 {
    public static void main(String[] args) {

        // 文件属性的读取
        File file = new File("text.txt");

        // 判断文件是否存在
        System.out.println("判断文件是否存在:" + file.exists());

        // 读取文件名称
        System.out.println("读取文件名称:" + file.getName());

        // 读取文件路径
        System.out.println("读取文件路径:" + file.getPath());

        // 读取文件绝对路径
        System.out.println("读取文件绝对路径:" + file.getAbsolutePath());

        // 读取文件父级路径
        System.out.println("父级文件路径:" + new File(file.getAbsolutePath()).getParent());

        // 读取文件大小
        System.out.println("文件大小:" + (float) file.length() / 1000 + "Kb");

        // 文件是否被隐藏
        System.out.println("文件是否被隐藏:" + file.isHidden());

        // 文件是否可读
        System.out.println("文件是否可读:" + file.canRead());

        // 文件是否可写
        System.out.println("文件是否可写:" + file.canWrite());

        //判断是否为文件夹
        System.out.println("判断是否为文件夹:"+file.isDirectory());
    }
}

五、文件属性的设置

文件可读、可写、只读方式设置:

           //将文件属性设置为可写:
            file.setWritable(true);

            //将文件属性设置为可读:
            file.setReadable(true);

            //设定文件只读:
            file.setReadOnly();

六、遍历文件夹

package ucas.file.demo;

import java.io.File;

public class FileDemo5 {
    public static void main(String[] args) {

        // 遍历文件夹
        //File dir=new File("/Users/yaopan/Documents");
        File dir=new File("../");
        printFiles(dir,1);

    }

    public static void  printFiles(File dir,int tab){
        if(dir.isDirectory()){
            File next[]=dir.listFiles();
            for (int i = 0; i < next.length; i++) {
                for(int j=0;j<tab;j++){
                    System.out.print("|--");
                }
                System.out.println(next[i].getName());
                if(next[i].isDirectory()){
                    printFiles(next[i],tab+1);

                }
            }
        }else{
            System.out.println("文件路径错误.");
        }
    }
}

输出结果:

|--.classpath
|--.DS_Store
|--.project
|--.settings
|--|--org.eclipse.jdt.core.prefs
|--bin
|--|--.DS_Store
|--|--Folder
|--|--|--one
|--|--|--|--two
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.class
|--|--|--|--|--IteratorDemo.class
|--|--|--|--|--ListDemo.class
|--|--|--|--|--MapDemo01.class
|--|--|--|--|--SetDemo.class
|--|--|--|--|--VectorDemo.class
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.class
|--|--|--|--|--FileDemo2.class
|--|--|--|--|--FileDemo3.class
|--|--|--|--|--FileDemo4.class
|--|--|--|--|--FileDemo5.class
|--|--|--|--|--FileDemo6.class
|--|--|--|--test
|--|--|--|--|--FileDeete.class
|--|--|--|--|--FileDemo01.class
|--|--|--|--|--FileFolder.class
|--|--|--|--|--FileRename.class
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.class
|--My Folder
|--|--two
|--|--|--three
|--src
|--|--.DS_Store
|--|--Folder
|--|--|--1.txt
|--|--|--1副本 2.txt
|--|--|--1副本 3.txt
|--|--|--1副本 4.txt
|--|--|--1副本 5.txt
|--|--|--1副本 6.txt
|--|--|--1副本 7.txt
|--|--|--1副本 8.txt
|--|--|--1副本 9.txt
|--|--|--1副本.txt
|--|--|--one
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.java
|--|--|--|--|--IteratorDemo.java
|--|--|--|--|--ListDemo.java
|--|--|--|--|--MapDemo01.java
|--|--|--|--|--SetDemo.java
|--|--|--|--|--VectorDemo.java
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.java
|--|--|--|--|--FileDemo2.java
|--|--|--|--|--FileDemo3.java
|--|--|--|--|--FileDemo4.java
|--|--|--|--|--FileDemo5.java
|--|--|--|--|--FileDemo6.java
|--|--|--|--test
|--|--|--|--|--FileDeete.java
|--|--|--|--|--FileDemo01.java
|--|--|--|--|--FileFolder.java
|--|--|--|--|--FileRename.java
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.java
|--tangshi.txt
|--tangshi2.txt
|--Test.txt
|--text.txt

七、文件的简单读写

工程目录下放一个tangshi.txt,里面输入文字,读取输出与写入:

package ucas.file.demo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class FileDemo6 {
    public static void main(String[] args) {

        // 文件的简单读和写

        File file = new File("tangshi.txt");

        try {
            FileInputStream fis = new FileInputStream(file);
            InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
            BufferedReader bfr = new BufferedReader(isr);

            String line;
            while ((line = bfr.readLine()) != null) {
                System.out.println(line);
            }

            bfr.close();
            isr.close();
            fis.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        File file2 = new File("tangshi2.txt");
        try {
            FileOutputStream fos = new FileOutputStream(file2);
            OutputStreamWriter osq = new OutputStreamWriter(fos);
            BufferedWriter bfw = new BufferedWriter(osq);

            bfw.write("登鹳雀楼\n");
            bfw.write("唐 王之涣\n");
            bfw.write("白日依山尽,黄河入海流。\n");
            bfw.write("白日依山尽,黄河入海流。\n");

            bfw.close();
            osq.close();
            fos.close();
            System.out.println("写入完成!");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
前天正好要找一个本地文件, 就用java实现了, 全盘的本地文件搜索功能. 代码不依赖其它第三方jar, 连日志都用system.out了. 初学者可以了解下. 主程序: LocalFileSearcher.java LocalFileSearcher searcher = new LocalFileSearcher(); searcher.doSearch("迅雷"); log如下: Start search keyword: 迅雷 Start search all drivers! success: E:\迅雷下载 success: F:\迅雷下载 success: C:\Users\Administrator\Desktop\迅雷.lnk success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Libraries\迅雷下载.library-ms success: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷影音.lnk success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件 success: C:\Users\All Users\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷影音.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu\迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷 success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\卸载迅雷.lnk success: C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\迅雷软件\迅雷\迅雷.lnk Search costs : 3861(ms) File searched : 154848 Folder searched: 31463 Success match : 16 后续再更新完善
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

esc_ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值