JAVA:文件读写

File I/O

1、File类查看文件/目录的属性,创建删除文件

JAVA API:java.io.File类

public static void fileStudy() {
    File file = new File("src/catnip/demo/testFile");
    try {
        file.createNewFile(); // 如果不存在则创建文件
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(file.isFile()); // 是否是文件
    System.out.println(file.isDirectory()); // 是否是目录
    System.out.println(file.getAbsolutePath()); // 绝对路径
    System.out.println(file.getPath()); // 相对路径
    System.out.println(file.length()); //返回文件的长度(字节), 文件不存在则返回0
    if (file.exists()); { // 是否存在
        file.delete(); // 删除
    }
}

2、流:读写文件

流是指一连串流动的字符,以先进先出方式发送信息的通道
读:文件 → 程序
写:文件 ← 程序

2.1 文本文件读写

2.1.1字节流

8位通用字节流
FileInputStream + FileOutputStream

//将文件a中的内容复制到b
import java.io.*;
public static void fileStreamStudy() throws IOException {
    FileInputStream fis = new FileInputStream("src/catnip/demo/a"); // 创建输入流对象,读a
    FileOutputStream fos =  new FileOutputStream("src/catnip/demo/b"); // 创建输出流对象,写b
    byte words [] = new byte[1024];
    do {
        fis.read(words);
        fos.write(words, 0, words.length);
    } while (fis.read() != -1);
    fis.close();
    fos.close();
}}

2.1.2 字符流 + 缓冲流

读:BufferedReader+FileReader
写:BufferedWriter+FileWriter

//模板文件a内容:姓名={name},性别={sexual},年龄={age}
//将catnip+女+20替换进去,存入文件b中
import java.io.*;
public static void fileStreamStudy() throws IOException {
    Reader fr = new FileReader("src/catnip/demo/a");
    BufferedReader reader = new BufferedReader(fr);

    Writer fw = new FileWriter("src/catnip/demo/b");
    BufferedWriter writer = new BufferedWriter(fw);

    String line = null;
    StringBuffer sbf = new StringBuffer();

    //循环读取并追加字符
    while ((line = reader.readLine()) != null) {
        sbf.append(line);
    }

    String newString = sbf.toString().replace("{name}", "catnip");
    newString = newString.replace("{sexual}", "女");
    newString = newString.replace("{age}", "20");

    writer.write(newString);  //写入文件
    writer.flush(); // 流对象的清空,不可少

    fr.close();
    fw.close();
    reader.close();
    writer.close();
}

2.2 二进制文件读写

DataInputStream + DataOutputStream

// pic1目录下有图片pic1.bmp,将图片复制到pic2目录下,名字为pic2.bmp
public static void picStreamStudy() throws IOException {
    FileInputStream fis = new FileInputStream("src/catnip/demo/pic1/pic1.bmp");
    DataInputStream dis = new DataInputStream(fis);

    FileOutputStream fos = new FileOutputStream("src/catnip/demo/pic2/pic2.bmp");
    DataOutputStream dos = new DataOutputStream(fos);

    byte words [] = new byte[9999];
    do {
        dis.read(words);
        dos.write(words, 0, words.length);
    } while (fis.read() != -1);

    dis.close();
    dos.close();
}

你可能感兴趣的:(JAVA:文件读写)