Java中的本地文件操作

文件操作

知识点概要:

1 File类简介

代码实例:

package com.netease.java_learn.file;

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

public class FileDemo01 {

    private static final String filePath = "src/files/hello.txt";

    private static final String emptyFilePath = "src/files/empty_hello.txt";

    private static final String directiryPath = "src/files";

    public static void main(String[] args) {

        // File myFile = new File(filePath);
        // File myFile = new File(directiryPath);
        File myFile = new File(emptyFilePath);

        // 判断指定文件或者目录是否存在
        if (myFile.exists()) {
            if (myFile.isFile()) {// 判断是否为文件
                System.out.println(filePath + "是一个文件");
            } else if (myFile.isDirectory()) {// 判断是否为目录
                System.out.println(filePath + "是一个目录");
            }
        } else {
            System.out.println("文件不存在,新建一个");
            try {
                // 新建一个新文件
                myFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
                System.err.println("新建文件" + emptyFilePath + "失败");
            }
            System.out.println("新建文件成功");
        }
    }

}

2 文件的创建、删除和重命名

代码实例:

package com.netease.java_learn.file;

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

/**
 * 演示文件的新建、删除和重命名
 * 
 * @author louxj424
 *
 */
public class FileDemo02 {

    private static final String ORIGIN_FILE = "hello.txt";

    private static final String RENAME_FILE = "src/new_hello.txt";

    public static void main(String[] args) {
        // 这里的new只是在代码中生成一个带有参数的可操作的文件对象的句柄,并未真正创建文件。
        // 依次尝试以下的路径变量,观察文件的生成位置,了解相对路径的概念。
        // "hello.txt"、"../hello.txt"、"src/hello.txt"、"src/files/hello.txt"
        File file = new File(ORIGIN_FILE);
        // 判断文件是否存在
        if (file.exists()) {
            /*
             * 重命名的同时移动文件,但这种操作可以跨文件目录,不能跨硬盘分区,跨分区移动需要使用专门的拷贝操作
             */
            File nameto = new File(RENAME_FILE);
            file.renameTo(nameto);
            System.out.println("重命名成功");

            file.delete();
            if (!file.exists()) {
                System.out.println("文件删除成功");
            }
        } else {
            System.out.println("原文件不存在");
            try {
                System.out.println("正在为您创建新文件...");
                // 创建新的文件
                file.createNewFile();
                System.out.println("恭喜,文件已经成功地创建!");
            } catch (IOException e) {
                System.out.println("文件无法创建");
                e.printStackTrace();
            }
        }

    }
}

执行两次上述代码,第一次执行时指定路径文件不存在,输出结果如下:

原文件不存在
正在为您创建新文件...
恭喜,文件已经成功地创建!

第二次执行时指定目录文件已经存在,输出结果如下所示:

重命名成功
文件删除成功

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

代码实例1:文件夹的创建

package com.netease.java_learn.file;

import java.io.File;

/**
 * 演示文件夹的新建
 * 
 * @author louxj424
 *
 */
public class DirectoryDemo01 {

    private static final String DIRECTORY1 = "src/com/netease/java_learn/myFoder1";

    private static final String DIRECTORY2 = "src/com/netease/java_learn/MyFolder2/one/two/three";

    public static void main(String[] args) {
        File folder1 = new File(DIRECTORY1);
        File folder2 = new File(DIRECTORY2);

        if (!folder1.exists() && !folder2.exists()) {
            try {
                // mkdir()用于创建一级目录
                if (folder1.mkdir() == true) {
                    System.out.println("一级文件夹创建完成!");
                }

                // mkdirs()用于创建多级目录
                if (folder2.mkdirs() == true) {
                    System.out.println("多级文件夹创建完成!");
                }
            } catch (Exception e) {
                System.out.println("文件夹创建失败!");
            }
        } else {
            System.out.println("有一个指定的文件夹已经存在!");
        }
    }

}


代码实例2:文件夹的重命名

package com.netease.fileoperation;

import java.io.File;

public class DirectoryDemo02 {

    public static void main(String[] args) {
        File folder=new File("src/com/netease/fileoperation/MyFolder");
        File newFolder=new File("src/com/netease/fileoperation/MyFolder-new");
        
        if (folder.renameTo(newFolder)) {
            System.out.println("done");
        }else
        {
            System.out.println("fail");
        }
    }

}

文件夹重命名成功的条件:

  • 在同一个分区中
  • 被重命名的路径事先不存在

代码实例3:文件夹的删除

package com.netease.fileoperation;

import java.io.File;

public class DirectoryDemo03 {

    public static void main(String[] args) {
        File folder=new File("src/com/netease/fileoperation/MyFolder");
        
        //要求被删除的文件夹必须是空文件夹,如果该文件夹下包含了其他的文件或文件夹都会宣告失败。
        if (folder.delete()) {
            System.out.println("删除目录成功");
        }
    }

}


4 文件属性的读取

代码实例:

package com.netease.fileoperation;

import java.io.File;
/**
 * 关注以下文件属性:
 * 文件是否存在
 * 读取文件名称
 * 读取文件路径
 * 读取文件绝对路径
 * 读取文件的父级路径
 * 读取文件大小
 * 判断文件是否被隐藏
 * 判断文件是否可读
 * 判断文件是否可写
 * 判断文件是否为文件夹
 * @author louxj424
 *
 */

public class ReadFileProperity {

    public static void main(String[] args) {
        File file = new File("text.txt");
        // 1. 判断文件是否存在
        System.out.println("判断文件是否存在:" + file.exists());

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

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

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

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

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

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

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

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

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

}


5 文件属性的设置

代码实例:

package com.netease.fileoperation;

import java.io.File;

/**
 * 本代码重点关注一下内容: 1. 将文件设定为可写 2. 将文件设定为可读 3. 将文件设定为只读
 * 
 * @author louxj424
 *
 */

public class SetFileProberity {

    public static void main(String[] args) {
        File file = new File("src/com/netease/fileoperation/test.file");
        if (file.exists()) {
            // 将文件设定为可写
            file.setWritable(false);

            // 将文件设定为可读
            file.setReadable(false);

            // 将文件设定为只读
            file.setReadOnly();
        }

    }

}


6 遍历文件夹

代码实例:

package com.netease.java_learn.file;

import java.io.File;

/**
 * 遍历文件夹Demo
 * 
 * @author louxj424
 *
 */
public class FileScanDemo01 {
    private static final String FILE_PATH = "src/files";

    public static void main(String[] args) {
        File file = new File(FILE_PATH);
        printFiles(file, 0);
    }

    /**
     * 打印制定目录下所有的子目录及目录下的文件
     * 
     * @param dir
     *            目标路径
     * @param tab
     *            默认缩进符号数
     */
    public static void printFiles(File dir, int tab) {
        if (dir.isDirectory()) {
            File nextFiles[] = dir.listFiles();
            for (int i = 0; i < nextFiles.length; i++) {
                for (int j = 0; j < tab; j++) {
                    System.out.print("-");
                }

                System.out.println(nextFiles[i].getName());
                if (nextFiles[i].isDirectory()) {
                    printFiles(nextFiles[i], tab + 1);
                }
            }
        }
    }

}



7 文件的简单读写

代码实例:

package com.netease.fileoperation;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class ReadWriteTextFile {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        File file =new File("text.txt");
        if (file.exists()) {
            System.out.println("file exits");
            try {
                //字节流对象FileInputStream
                FileInputStream fis=new FileInputStream(file);  
                //字符流对象InputStreamReader
                InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
                //缓存读对象BufferedReader
                BufferedReader br=new BufferedReader(isr);
                String line;
                    
                while ((line=br.readLine())!=null) {
                    System.out.println(line);
                }   
                br.close();
                isr.close();
                fis.close();        
            }
            //处理编码不支持异常
            catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            //处理文件不存在异常
            catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //处理IO异常
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

}

你可能感兴趣的:(Java中的本地文件操作)