java常用的文件读写操作

简介: java常用的文件读写操作

 FileInputStream、FileOutputStream和FileReader、FileWriter用法


前言

按读写方法,对文件的读写操作方法有以下几种类型:

1、以字节方式读写,适合所有文件类型;

2、以字符方式单个或按行读写,适合文本文件。

这里仅介绍使用2种常用的文件读写方法:字节方式读写和按行读写:FileInputStream、FileOutputStream和FileReader、FileWriter用法

一、FileInputStream和FileOutputStream用法

1、新建工程:FileOperation

2、新建包:

3、创建文件读写的工具类:FileOperation

代码如下:

package com.my.file;
import java.io.*;
/**
 * 文件读写操作类
 */
public class FileOperation {
    /**
     * 根据输入的文件路径读取文件内容,仅支持读取文本文件。
     * @param filePath
     * @return
     */
    public static String readFromFile(String filePath){
        //输入检查:如果输入的文件不存在则返回空字符串
        File file = new File(filePath);
        if (!file.isFile()){
            return "";
        }
        //开始读取文件
        String result = "";
        //读文件的缓存
        byte[] temp = new byte[1024];
        try {
            FileInputStream fis = new FileInputStream(file);
            // 使用 循环读取, FileInputStream的read方法,会一次读取内容放到temp。
            // 读取内容的多少根据temp定义的大小而定。如果没有数据可读了,read方法会返回-1.
            while(fis.read(temp) != -1){
                result = result + new String(temp);
            }
            fis.close();
        } catch (FileNotFoundException e) {
            System.out.println(filePath + " 文件没有找到。");
            return "";
        } catch (IOException e) {
            System.out.println(filePath + " 读文件时发生异常。");
            return "";
        }
        return result;
    }
    /**
     * 将字节数组的内容写入文件
     * @param filePath
     * @param bytes
     * @return
     */
    public static boolean writeToFile(String filePath, byte[] bytes){
        File file = new File(filePath);
        if (!file.exists()){ //文件若不存在则创建一个
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            FileOutputStream out = new FileOutputStream(file);
            out.write(bytes);
            out.flush();
            out.close();
        } catch (FileNotFoundException e) {
            System.out.println(filePath + " 文件没有找到。");
            return false;
        } catch (IOException e) {
            System.out.println(filePath + " 写文件时发生异常。");
            return false;
        }
        return  true;
    }
    /**
     *  使用FileReader读文本文件
     * @param filePath
     * @return
     */
    public static String readFileByLine(String filePath){
    //输入检查:如果输入的文件不存在则返回空字符串
    File file = new File(filePath);
    if (!file.isFile()){
        return "";
    }
    //开始读取文件
    String result = "";
    String temp = "";
    try {
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);
        while ((temp = br.readLine()) != null){
            result = result + br;
        }
        br.close();
        fr.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return result;
}
    /**
     * 将字符串内容写入文件,使用FileWriter
     * @param filePath
     * @param bytes
     * @return
     */
    public static boolean writeToFileByFileWriter(String filePath,String content){
        File file = new File(filePath);
        if (!file.exists()){ //文件若不存在则创建一个
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            FileWriter fw = new FileWriter(file);
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content);
            bw.close();
            fw.close();
        } catch (FileNotFoundException e) {
            System.out.println(filePath + " 文件没有找到。");
            return false;
        } catch (IOException e) {
            System.out.println(filePath + " 写文件时发生异常。");
            return false;
        }
        return  true;
    }
}

在这个位置新建一个文件:E:\new\1.11\names.txt 内容为:

张三,男,19岁

李四,男,20岁

4、创建测试类(main函数入口类):FileOperationTest

代码如下:

package com.my.file;
public class FileOperationTest {
    public static void main(String[] args) {
        //1、按字节方式读取
        //从文件读取内容并打印
        String filePath="E:\\new\\1.11\\names.txt";
        String content = FileOperation.readFromFile(filePath);
        System.out.println(filePath+"文件里的内容为:\n"+content);
        //将读取的文件内容,增加数据并写入另一个文件
        content = content.trim();//去掉字符串首尾的空格
        content = content + "\n" + "王九,男,22岁";
        FileOperation.writeToFile("E:\\new\\1.11\\names_add.txt",content.getBytes());
        //检查E:\new\1.11\names_add.txt的内容,应该为:
        //张三,男,19岁
        //李四,男,20岁
        //王九,男,22岁
        //2、按字符方式,按行读取
        //从文件读取内容并打印
        filePath="E:\\new\\1.11\\names.txt";
        content = FileOperation.readFileByLine(filePath);
        content = content.trim();
        System.out.println(filePath+"文件里的内容为:\n"+content);
        content = content + "\n" + "赵九,男,32岁";
        FileOperation.writeToFileByFileWriter("E:\\new\\1.11\\names_add2.txt",content);
    }
}
<font color=#999AAA >

5、运行查看结果:

相关文章
|
3天前
|
Java
揭秘Java文件操作背后的惊天秘密:读写、复制、删除一网打尽!
【6月更文挑战第27天】Java文件操作涵盖读、写、复制和删除。例如,读文件使用`BufferedReader`和`FileReader`;写文件利用`BufferedWriter`和`FileWriter`;复制文件通过读写流实现;删除文件则依赖`Files.delete()`。以上代码示例展示了具体实现。
|
3天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
9 1
|
3天前
|
安全 Java 开发者
掌握Java文件操作,让你的代码“飞”起来!读写、复制、删除全攻略!
【6月更文挑战第27天】Java文件操作涵盖读写、复制、删除。使用NIO的`Files`类提升效率:读取文件用`newBufferedReader`实现逐行读,写入文件用`newBufferedWriter`,复制文件用`copy`方法,删除文件用`deleteIfExists`,确保安全。这些最佳实践优化了内存使用,简化了代码。
|
5天前
|
XML Java 数据格式
java创建xml文件内容
java创建xml文件内容
10 0
|
5天前
|
XML Java 数据格式
java解析xml文件内容
java解析xml文件内容
14 0
|
3天前
|
监控 Java API
Java文件操作大揭秘:不只是读写,还有这些逆天技巧!
【6月更文挑战第27天】Java文件操作不仅包括基础的读写,还有NIO的文件过滤、锁定、映射以及压缩解压和文件变化监控。例如,使用Files.walk结合PathMatcher查找特定类型的文件,利用FileChannel进行文件锁定和内存映射以提升效率,借助ZipOutputStream压缩文件,以及用WatchService监听文件系统变化。这些高级技巧能提升开发效率。
|
3天前
|
Java API
惊呆了!Java文件操作竟能如此简单:一分钟学会读写、复制、删除!
【6月更文挑战第27天】Java编程中的文件操作简单易行。使用`java.io`包中的`FileInputStream`和`FileOutputStream`进行读写,例如写文件将字符串转为字节写入,读文件则循环读取字节。文件复制涉及两个流,从源文件读取后写入目标文件。删除文件只需调用`File`对象的`delete`方法。这些基本操作让Java文件处理变得直观且易于掌握。
|
3天前
|
存储 安全 Java
Java文件操作,让你的代码更“有型”!读写、复制、删除全解析!
【6月更文挑战第27天】在Java中进行文件操作是程序基础功能之一,涉及读写、复制和删除。使用`FileReader/FileWriter`进行文本文件的读写,如示例所示,通过`try-with-resources`保证资源释放。文件复制利用`FileInputStream/FileOutputStream`,而删除文件则依赖`File`的`delete()`方法,确保条件安全执行。这些标准库类提供了高效且健壮的文件管理能力。
|
3天前
|
安全 Java API
Java文件操作:从入门到精通,读写、复制、删除一个都不能少!
【6月更文挑战第27天】在Java编程中,学习文件操作至关重要,涵盖读写、复制和删除。入门文件读写涉及读取`example.txt`内容并追加文字;进阶文件复制展示如何使用`FileInputStream`和`FileOutputStream`从`source.txt`复制到`destination.txt`;精通文件删除则利用`File`的`delete()`方法安全删除`destination.txt`,前提检查文件存在且有权限。这些实例带你全面掌握Java文件操作基础!
|
3天前
|
Java API 数据处理
Java文件操作,让你成为文件管理的王者!读写、复制、删除不在话下!
【6月更文挑战第27天】在Java编程中,掌握文件操作至关重要。使用java.io包的File和流类,可以轻松实现文件读写、复制和删除。