java中的文件操作(干货)

作者: 在南方的北方人_Elijah | 来源:发表于2017-02-11 13:34 被阅读229次

    File类简介

    package com.file;
    
    import java.io.File;
    import java.io.IOException;
    
    /**
     * Created by elijahliu on 2017/2/10.
     */
    public class filetest {
        public static void main(String[] args) {
            File file = new File("hello.txt");
            //是否存在
            if (file.exists()) {
                //文件
                System.out.println(file.isFile());
                //路径(文件夹)
                System.out.println(file.isDirectory());
    
                File nameto = new File("new Hello.txt");
                file.renameTo(nameto);//这里就是重命名文件的操作,直接新建一个file对象然后使用renameTo方法可以重命名文件
    
            } else {
                System.out.println("文件不存在");
                try {
                    file.createNewFile();
                    System.out.println("文件已被创建");
                } catch (IOException e) {
                    System.out.println("文件无法创建");
                }
            }
            if (file.exists()) {
                //删除文件
                file.delete();
                System.out.println("删除文件");
            } else {
            }
        }
    }
    

    文件夹操作

    package com.file;
    
    import java.io.File;
    
    /**
     * Created by elijahliu on 2017/2/11.
     */
    public class HelloFolder {
        public static void main(String[] args) {
            File folder = new File("my new folder");
            if (folder.mkdir()) {//创建文件夹 判断是否成功
                System.out.println("文件夹创建完成");
                File newfolder = new File("myn new foleder - new");
                folder.renameTo(newfolder);//这里重命名了文件夹  文件夹的重命名是可以单独更改一级的文件夹名的  而这一级下面的文件夹不变 保存目录结构
                if (folder.delete()) {
                    System.out.print("done");//这里的删除只能删除空文件夹,如果文件夹中有东西,那么则不能删除,不问三七二十一直接删除一个非空文件夹是非常不负责任的
                } else {
                    System.out.println("fail");
                }
    
            }else{
                if (folder.exists()) {
                    System.out.println("文件夹已经存在不用创建");
                }else{
                    System.out.println("文件夹创建失败");
                }
            }
            File folders = new File("my new folder/one/two/three/main");
            folders.mkdirs();//在java中用mkdir只能创建一个,mkdirs可以创建多级目录
    
        }
    }
    

    文件属性设置

    package com.file;
    
    import java.io.File;
    
    /**
     * Created by elijahliu on 2017/2/11.
     */
    public class SetFileProperty {
        public static void main(String[] args){
            File file = new File("test.file");
            if (file.exists()){
                file.setWritable(true);//可写
                file.setReadable(true);//可读
                file.setReadOnly();//只读
            }
        }
    }
    
    

    遍历文件夹

        public void printFiles(File dir,int tab) {//tab为不同目录结构的缩进量
            if (dir.isDirectory()) {
                File next[] = dir.listFiles();//判断如果是目录 则返回目录所有的文件名数组用于遍历文件夹
                for (int i = 0;i<next.length;i++) {//层次缩进输出
                    System.out.print("---");
                }
                for(int i = 0;i<next.length;i++) {//这里用了递归获取目录结构
                    System.out.println(next[i].getName());
                    if (next[i].isFile()) {
                        printFiles(next[i],++tab);
    
                    }
                }
            }
        }
    
    

    文件简单读写

    package com.file;
    
    import java.io.*;
    
    /**
     * Created by elijahliu on 2017/2/11.
     */
    public class ReadFile {
        public static void main(String[] args) {
            File file = new File("new Hello.txt");
            if(file.exists()){
                System.err.print("exsit");
                try (FileInputStream fis = new FileInputStream(file)) {//文件输入流 这是字节流
    
                    InputStreamReader isr = new InputStreamReader(fis,"UTF-8");//inputstreamReader是一个字节流,将字节流和字符流转化的时候,就需要制定一个编码方式,不然就会乱码
                    BufferedReader br = new BufferedReader(isr);//字符缓冲区
    
                    String line;
                    while((line = br.readLine())!=null){//这里将缓冲区里的内容如果非空就读出来打印
                        System.out.println(line);
    
                    }
                    br.close();//最后将各个线程关闭
                    isr.close();
                    fis.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            File newfile = new File("newtext.txt");
            try {
                FileOutputStream fos = new FileOutputStream(newfile);//这里如果文件不存在会自动创建文件
                OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");//和读取一样这里是转化的是字节和字符流
                BufferedWriter bw = new BufferedWriter(osw);//这里是写入缓冲区
    
                bw.write("厉害了我的哥");//写入字符串
    
                bw.close();//和上面一样  这里后打开的先关闭 先打开的后关闭
                osw.close();
                fos.close();
                System.out.println("done");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    }
    
    

    相关文章

      网友评论

        本文标题:java中的文件操作(干货)

        本文链接:https://www.haomeiwen.com/subject/qoagittx.html