javaIO操作

2023-01-19 08:28:43

IO操作

一、IO流技术

stream 流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被 当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为 插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出(读取 写入)。

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的 传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操 作。

二、File类

java中我们通过java.io.File类实现对文件的基本属性进行操作,包括文件属性读取,文件创建,文 件删除,文件添加等等。File是一个类,那么在使用的时候就需要创建对象,但是File类的实例是不可变 的,也就是说,一旦创建,由File对象表示的抽象路径名将永远不会改变,也就是说利用构造方法,指定 路径名、文件名等来构造File类的对象,之后调用该对象的createNewFile()方法就可以创建出相应的文 件。

File类的对象可以代表一个具体的文件路径,在实际运用种,可以使用绝对路径也可以使用相对路 径,下面是创建文件对象实例

例子:

import java.io.File;

public class FileTestDemo {
    public static void main(String[] args) {
        String path = "dat";
        File file = new File(path);
        System.out.println(file.mkdir());//在当前项目的根目录建立dat目录
        //.isDirectory()判断File对象是不是目录,如果不存在返回false,如果存在是文件,返回false
        System.out.println(file.isDirectory());

        //在d盘下建立d:/abcxaaa/user/shop/images/
        File ds = new File("d:/abcxaaa/user/shop/images/");
        if(!ds.exists()){
              ds.mkdirs();
        }
    }
}

三、文件的操作(输出路径、名称、基本名称、扩展名、删除、修改、读取、建立)

import java.io.File;

public class File3 {
    public static void main(String[] args) {
        File file = new File("c.txt");
        System.out.println(file.isFile());//是不是文件 //true
        System.out.println(file.length());//文件的长度 //190
        System.out.println(file.exists());//是否存在 //true
        System.out.printf("%tF %<tT%n",file.lastModified());//2022-09-21 20:18:28
        System.out.println(file.getName());//c.txt //得到文件名
        System.out.println(file.getPath());//c.txt //文件路径
        System.out.println(file.getAbsolutePath());//D:\idea project\project\c.txt  //文件的绝对路径
        //文件目录
        String t = file.getAbsolutePath();
        System.out.println(t.substring(0,t.lastIndexOf("\\")));//D:\idea project\project
        //文件基本名
        System.out.println(t.substring(t.lastIndexOf("\\") + 1,t.lastIndexOf(".")));//c
        //文件扩展名
        System.out.println(t.substring(t.lastIndexOf(".")));//.txt
        //更改文件名为  uuuuu.txt
        file.renameTo(new File("uuuuu.txt"));
        //更改文件位置到 d:/ABC 并修改文件名为 xyz.txt
        File ff = new File("uuuuu.txt");
        ff.renameTo(new File("d:/ABC/xyz.txt"));
        //删除文件
        File f3 = new File("d:/ABC/xyz.txt");
        //如果xyz是文件且存在
        if(f3.isFile()&&f3.exists()){
            //删除
            f3.delete();
        }
    }
}

import java.io.*;

public class File2 {
    public static void main(String[] args) throws Exception {
        //读取文本文件

        //字节流
        File file = new File("c.txt");
        FileInputStream fis = new FileInputStream(file);
        System.out.println(new String(fis.readAllBytes()));
//字符流
        FileReader reader = new FileReader(file);
        BufferedReader br = new BufferedReader(reader);
        while (br.ready()){
            System.out.println(br.readLine());
        }
    }
}

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintWriter;

public class File1 {
    public static void main(String[] args) throws Exception {
        //建立一个空文件
        File f1 = new File("a.txt");
        f1.createNewFile();
//建立文件并写入内容
        PrintWriter out = new PrintWriter("b.txt");
        out.write("hello 中文\n");
        out.printf("%tF %<tF%n",System.currentTimeMillis());
        out.flush();
//字节流写入文件
        FileOutputStream fos = new FileOutputStream("c.txt",true);
        for(int i=0; i<10; i++) {
            fos.write("87 - hello 文件\r\n".getBytes());
        }
        fos.close();
//字符流
        FileWriter fw = new FileWriter("d.txt");
        fw.write("hello程序设计");
        fw.close();


    }
}

四、目录操作(建立目录 删除目录 删除非空目录 遍历目录)

import java.io.File;

public class FileTestDemo {
    public static void main(String[] args) {
        String path = "dat";
        File file = new File(path);
        System.out.println(file.mkdir());//在当前项目的根目录建立dat目录
        //.isDirectory()判断File对象是不是目录,如果不存在返回false,如果存在是文件,返回false
        System.out.println(file.isDirectory());

        //在d盘下建立d:/abcxaaa/user/shop/images/
        File ds = new File("d:/abcxaaa/user/shop/images/");
        if(!ds.exists()){
              ds.mkdirs();
        }

    }
}

import java.io.File;
import java.util.Arrays;
public class FileTestDemo2 {
    public static void main(String[] args) {
        File dir = new File("d:/ABC");
        System.out.println(dir.exists());//判断ABC是否存在//true
        System.out.println(dir.isDirectory());//判断是不是目录//true
        //方法一
        String[] ds = dir.list();
        for(String d : ds) {
            System.out.println(d);
        }//遍历目录ABC中的文件
//.git  .gitignore  .idea  jihefanxing.txt  out  project8.25.iml  src
        
        //方法二
        File[] fs = dir.listFiles();
        for(File f : fs) {
            System.out.println(f.getName()+(f.isFile()?"文件":"目录"));
//.git目录 .gitignore文件 .idea目录 jihefanxing.txt文件 out目录 project8.25.iml文件 src目录
        }

        System.out.println("---------------------------------");
        String[] ds2 = dir.list((a,b)->true);
        //(a,b)->返回布尔值 a代表dir目录  b代表目录中的子元素的名称字符串
        System.out.println(Arrays.toString(ds2));
        //true返回[.git, .gitignore, .idea, jihefanxing.txt, out, project8.25.iml, src]
        //flase返回[]为空

        System.out.println("-----------------");
        String[] ds3 = dir.list((a,b)-> b.endsWith(".txt"));
        //搜索以...结尾的文件
        System.out.println(Arrays.toString(ds3));
        //[gyfyajshd.txt, jihefanxing.txt, sfadhjgas.txt]

        for(String s:ds3){
            System.out.println(s);
        }//gyfyajshd.txt   jihefanxing.txt  sfadhjgas.txt

        System.out.println("-------------------------");

        File[] fs2 = dir.listFiles(f>f.isFile()&&f.getName().endsWith(".java"));
        for(File f:fs2){
            System.out.println(f.getName());
        }
    }
}


import java.io.File;
public class FileTestDemo3 {
    public static void main(String[] args) {
        String dst = "d:/ABC";
        File f = new File(dst);
        del(new File("d:\\ABC"));
//        if(f.exists()&&f.isDirectory()) {
//            //此方法只能删除空目录,不能删除有东西的目录
//            System.out.println(f.delete());
//        }
    }
    public static void del(File dir){
        if(dir.isDirectory()){
            File[] files = dir.listFiles();
            for(File f : files){
                if(f.isDirectory()) {
                    del(f);
                }
                f.delete();
            }
        }
        dir.delete();
    }

}
  • 作者:haha085
  • 原文链接:https://blog.csdn.net/haha085/article/details/126981514
    更新时间:2023-01-19 08:28:43