Java File操作

import java.io.*;

public class FileTest {

    public static void main(String[] args) {
        testCreateFile();
        testFileConst();
        testFileCreateV2();
        testDeleteFile();
        testCreatePath();
        testListDir();
        testListDirFile();
        testIsDirectory();
        testWalk();
        testWriteRandomAccessFile();
    }
    /**
     * 创建一个空文件
     * File.createFile()
     * python: file = open(path,'w')   file.close()
     *  */
    public static void testCreateFile(){
        File f = new File("D:\\hello.txt");
        try {
            f.createNewFile();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
    /**
     * File类的两个常量,separator, pathSeparator
     * */
    public static void testFileConst(){
        System.out.println(File.separator);
        System.out.println(File.pathSeparator);
    }
    /**
     * 要想使得我们的代码跨平台,更加健壮,
     * 所以,采用File.separator, File.pathSeparator
     * */
    public static void testFileCreateV2(){
        String filePath = "D:" + File.separator + "hello.txt";
        File f = new File(filePath);
        try {
            f.createNewFile();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
    /**
     * File.delete()
     * python: os.remove(file)
     * */
    public static void testDeleteFile() {
        String fileName = "D:" + File.separator + "hello.txt";
        File f =new File(fileName);
        if(f.exists()){
            if(f.delete()){
                System.out.println("删除成功");
            } else {
                System.out.println("删除失败");
            }
        }else{
            System.out.println("文件不存在");
        }
    }
    /**
     * File.mkdir() 创建单个目录
     * File.mkdirs() 级联创建目录
     * 当然使用mkdirs() 创建单个目录也是可以的
     * python: os.makedirs(path)
     * */
    public static void testCreatePath() {
        String filePath1 = "D:"+ File.separator+"hello1";
        String filePath2 = "D:"+ File.separator+"hello2" + File.separator+"hello3";
        File f = new File(filePath1);
        f.mkdirs();
    }
    /**
     * File.list()返回值为String[] 仅仅是文件名不是全路径
     * python: os.listdir()
     * */
    public static void testListDir() {
        String fileName="D:" + File.separator;
        File f = new File(fileName);
        String[] str = f.list();//对返回的参数要进行检验,否则容易出现NullPointerException
        if(str != null) {
            for (int i = 0; i < str.length; i++) {
                System.out.println(str[i]);
            }
        }
    }
    /**
     * File.listFiles() File[]
     * */
    public static void testListDirFile() {
        String fileName="D:"+ File.separator+"hello1";
        File f = new File(fileName);
        File[] str=f.listFiles();
        if(str != null) {
            for (int i = 0; i < str.length; i++) {
                System.out.println(str[i]);
            }
        }
    }
    /**
    * File.isDirectory()
    * */
    public static void testIsDirectory() {
        String fileName="D:"+File.separator;
        File f=new File(fileName);
        if(f.isDirectory()){
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
    /**
     * 列写出指定目录下所有文件
     * python: 直接有build-in的walk函数,java需要自己写递归
     * os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
     * for root, dirs, files in os.walk("path", topdown=False):
     *     print(root)
     *     for name in files:
     *         print(os.path.join(root, name))
     *     for name in dirs:
     *         print(os.path.join(root, name))
     * */
    public static void testWalk() {
        String fileName="D:"+File.separator;
        File f=new File(fileName);
        print(f);
    }
    public static void print(File f){
        if(f==null){return;}
        if(f.isDirectory()){
            System.out.println(f);
            File[] fileArray=f.listFiles();
            if(fileArray != null) {
                for(int i = 0; i < fileArray.length; i++) {
                    print(fileArray[i]);
                }
            }
        } else {
            System.out.println(f);
        }
    }
    /**
     * RandomAccessFile写入文件
     * 如果此时打开hello.txt查看的话,会发现那是乱码。
     * 如何解决?
     * */
    public static void testWriteRandomAccessFile(){
        try {
            String fileName = "D:" + File.separator + "hello.txt";
            File f = new File(fileName);
            RandomAccessFile demo = new RandomAccessFile(f, "rw");
            demo.writeBytes("asdsad");
            demo.writeInt(12);
            demo.writeBoolean(true);
            demo.writeChar('A');
            demo.writeFloat(1.21f);
            demo.writeDouble(12.123);
            demo.close();
        } catch (IOException e){
            e.printStackTrace();
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值