java文件操作2

这篇具有很好参考价值的文章主要介绍了java文件操作2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、FileReader和FileWriter

1.FileReader
首先来介绍一下FileReader类。FileReader类可用于读取字符流和文本文件。它提供了多个构造函数,其中最常用的是接受一个文件名或File对象作为参数的构造函数。在使用FileReader类时,需要注意一些异常情况,如文件不存在、文件无法读取等。为此,我们可以使用try-catch块来捕获这些异常,并添加适当的处理逻辑。

简单使用:

public class Demo9_FileReader {
    public static void main(String[] args) throws IOException {
    	//创建FileWriter对象
        FileReader fr = new FileReader("src/com/IOSteam/file/a.txt");
        int b;
        while ((b=fr.read())!=-1){//通过项目码表一次读取一个字符
            System.out.print((char)b);
        }
        fr.close();
    }
}

创建了FileReader对象后,就可以使用它来读取文件内容了。FileReader类提供了多个读取字符流的方法,如read()、read(char[])和read(char[], int, int)等。这些方法都会返回读取到的字符数,如果已经到达文件末尾,则返回-1。


2.FileWriter
FileWriter类用于向文本文件中写入数据。它也提供了多个构造函数,其中最常用的是接受一个文件名或File对象作为参数的构造函数。在使用FileWriter类时,同样需要注意异常情况,如文件无法写入、磁盘空间不足等。因此,建议在使用FileWriter类时添加try-catch块来捕获异常并进行相应的处理。

简单使用:

public class Demo10_FileWriter {
    public static void main(String[] args) throws IOException {
    	//创建FileWriter对象
        FileWriter fw = new FileWriter("src/com/IOSteam/file/b.txt");
        fw.write("大家好我是xxx");
        fw.close();
    }

下面我们利用FileWriter和FileReader实现一个简单的文件拷贝:

public class Demo11_CharStreamCopy {
    public static void main(String[] args) throws IOException {
        FileReader fr= new FileReader("src/com/IOSteam/file/a.txt");
        FileWriter fw = new FileWriter("src/com/IOSteam/file/b.txt");
        int b;
        char[] arr = new char[1024];
        while ((b=fr.read(arr))!=-1){
            System.out.println(b);
//fw.write(arr, 0, b) 表示将 arr 数组中从下标为 0 开始的前 b 个元素写入到输出流中。其中,arr 是要写入的字符数组,0 是起始位置,b 是要写入的字符数量。
            fw.write(arr,0,b);
        }
        fr.close();
        fw.close();
    }
}

三、BufferedReader和BufferedWriter

BufferedReader和BufferedWriter是Java语言中常用的字符缓冲流类,它们分别用于高效地读取和写入文本数据。


1.BufferedReader类的使用
创建BufferedReader对象
为了使用BufferedReader类读取文件,我们需要先创建一个FileReader对象,然后将其作为参数传递给BufferedReader构造函数。

FileReader fileReader = new FileReader("filename.txt");
BufferedReader reader = new BufferedReader(fileReader);

读取文件内容
创建了BufferedReader对象后,就可以使用它来读取文件内容了。BufferedReader类提供了多个读取字符流的方法,如read()、read(char[])和readLine()等。这些方法都会返回读取到的字符数或字符串,如果已经到达文件末尾,则返回null。
下面是一个简单的例子,演示如何使用BufferedReader类读取文本文件的内容:

try (BufferedReader reader = new BufferedReader(new FileReader("filename.txt"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

2.BufferedWriter类的使用
与BufferedReader类不同,要使用BufferedWriter类写入文件时,我们只需创建一个FileWriter对象,然后将其作为参数传递给BufferedWriter构造函数即可

FileWriter fileWriter = new FileWriter("filename.txt");
BufferedWriter writer = new BufferedWriter(fileWriter);

创建了BufferedWriter对象后,就可以使用它来写入文件内容了。BufferedWriter类提供了多个写入字符流的方法,如write(int)、write(char[])和write(String)等。这些方法都会将字符写入输出流。
写入文件内容:

try (BufferedWriter writer = new BufferedWriter(new FileWriter("filename.txt"))) {
    String data = "Hello, World!";
    writer.write(data);
} catch (IOException e) {
    e.printStackTrace();
}

下面用文件拷贝例子简单使用一下这两个对象:

/*带缓冲区的流中的方法
* readLine()读取一个文本行,遇到\n,\r就结束
* newLine()写入一个换行
* */
public class Demo12_BufferReadWriter {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("src/com/IOSteam/file/a.txt"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("src/com/IOSteam/file/b.txt"));
        String line;
        while ((line=br.readLine())!=null){
            bw.write(line);
            bw.newLine();//写出回车换行符
        }
        br.close();
        bw.close();
    }
    public static void test() throws IOException{
        BufferedReader br = new BufferedReader(new FileReader("src/com/IOSteam/file/a.txt"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("src/com/IOSteam/file/b.txt"));
        int b;
        while ((b=br.read())!=-1){
            bw.write((char)b);
        }
        br.close();
        bw.close();
    }
}

四、LineNumberReader

2023/5/23 09:34:32

LineNumberReader是Java中的一个类,它可以在读取文本文件时,自动记录每行的行号。使用LineNumberReader可以方便地获取当前读取到文件的哪一行。

以下是一个示例代码,展示如何使用LineNumberReader来读取一个文本文件,同时输出每行的行号和文本内容:

import java.io.*;

public class ReadFileWithLineNumbers {
    public static void main(String[] args) {
        try {
            File file = new File("test.txt");
            FileReader reader = new FileReader(file);
            LineNumberReader lineNumberReader = new LineNumberReader(reader);

            String line;
            while ((line = lineNumberReader.readLine()) != null) {
                int lineNumber = lineNumberReader.getLineNumber();
                System.out.println("Line " + lineNumber + ": " + line);
            }

            lineNumberReader.close();
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

五、InputStreamReader和OutputStreamWriter

InputStreamReader和OutputStreamWriter是Java中的两个类,它们可以用于将字节流转换为字符流,或者将字符流转换为字节流。这两个类通常用于处理文本文件,或者网络传输中的数据。

下面是一个简单的示例,演示如何使用InputStreamReader读取一个文本文件,并使用OutputStreamWriter将其写入到另一个文件中:

import java.io.*;

public class CopyFile {
    public static void main(String[] args) {
        try {
            File inputFile = new File("input.txt");
            FileInputStream inputStream = new FileInputStream(inputFile);
            InputStreamReader reader = new InputStreamReader(inputStream);

            File outputFile = new File("output.txt");
            FileOutputStream outputStream = new FileOutputStream(outputFile);
            OutputStreamWriter writer = new OutputStreamWriter(outputStream);

            int data;
            while ((data = reader.read()) != -1) {
                char character = (char) data;
                writer.write(character);
            }

            reader.close();
            writer.close();
            inputStream.close();
            outputStream.close();

            System.out.println("File copied successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

六、SequenceInputStream

SequenceInputStream是Java IO中的一个类,它可以将多个InputStream对象串联在一起,形成一个新的InputStream对象。这样就可以从这个新的InputStream对象中连续读取多个文件或者数据流的内容。

下面是一个简单的示例,演示如何使用SequenceInputStream读取两个文本文件的内容,并输出到控制台:

import java.io.*;

public class MergeFiles {
    public static void main(String[] args) {
        try {
            File file1 = new File("file1.txt");
            FileInputStream inputStream1 = new FileInputStream(file1);

            File file2 = new File("file2.txt");
            FileInputStream inputStream2 = new FileInputStream(file2);

            SequenceInputStream sequenceInputStream = new SequenceInputStream(inputStream1, inputStream2);
            InputStreamReader reader = new InputStreamReader(sequenceInputStream);

            int data;
            while ((data = reader.read()) != -1) {
                char character = (char) data;
                System.out.print(character);
            }

            reader.close();
            sequenceInputStream.close();
            inputStream1.close();
            inputStream2.close();

            System.out.println("Files merged successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们首先创建了两个FileInputStream对象分别用于读取"file1.txt"和"file2.txt"两个文件的内容。然后将这两个输入流对象作为参数,创建一个SequenceInputStream对象。

接着我们创建了一个InputStreamReader对象,将SequenceInputStream对象作为参数传递给它,这样我们就可以从这个新的InputStream对象中连续读取两个文件的内容。

在while循环中,我们逐个字符地读取InputStreamReader对象中的数据,并将其输出到控制台。最后,在程序结束时关闭所有打开的资源。

需要注意的是,SequenceInputStream会按照它们被传入的顺序,依次从每个输入流中读取数据。如果一个输入流读取完毕,将自动切换到下一个输入流。此外,SequenceInputStream本身并不缓存任何数据,因此在使用时要保证每个输入流都已经准备好了数据。

总结

除了基本的读取和写入功能外,FileReader和FileWriter还支持其他许多操作,例如读取行、读取指定长度的字符、追加数据等。在使用这些功能时,需要详细阅读API文档并了解其用法。

总之,FileReader和FileWriter是Java语言中非常实用的文件操作类,它们可以帮助我们轻松地读取和写入文本文件。在使用它们时,需要注意异常情况,并适当处理这些异常。此外,还可以利用它们提供的其他函数来实现更多功能。文章来源地址https://www.toymoban.com/news/detail-466060.html

到了这里,关于java文件操作2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Js的FileReader读取文件内容(async/await)

      要通过FileReader判断上传的文件是否为图片,可以使用FileReader读取文件内容,并判断文件的MIME类型是否为图片类型。 以下是一个示例代码,可以在文件上传时触发change事件,并检查上传的文件是否为图片类型: 上面的代码首先使用FileReader读取上传的文件,并将文件内容转

    2024年02月09日
    浏览(45)
  • 前端FileReader对象实现图片file文件转base64

    1、file转base64具体代码 2、原理解析 ​ 上面封装的方法,其原理主要是借助 FileReader 对象来实现图片格式的转换, FileReader 对象中的 readAsDataURL() 方法,可以读取一个 File 或 Blob 类型的文件,并将其转换为base64格式的字符串。但要注意的一点是:我们通过 readAsDataURL() 方法去读

    2023年04月09日
    浏览(40)
  • 浏览器中处理上传大文件——FileReader.readAsArrayBuffer()方法

    平常从客户端上传文件到服务器端,只需要读取 input 的 File 对象,然后将其塞到 FormData 对象中,然后使用 ajax 发送到服务器端,服务器端会有配套的读文件和写文件的操作。 现在遇到一个问题,就是在本地一个进程中,浏览器和其他代码间数据的发送,因为不经过 HTTP,这

    2024年02月11日
    浏览(39)
  • 先来先服务调度算法(C语言代码实现) 大三操作系统实验

    实验原理: 先来先服务(First Come First Served,FCFS),是一种简单的调度算法,它既适用于作业调度,也适用于进程调度。先来先服务算法是按照作业或进程的到达先后次序来进行调度。当作业调度中采用该算法时,每次调度都是从后备队列中选择一个最先进入该队列中作业,将

    2024年04月16日
    浏览(34)
  • html5提供的FileReader是一种异步文件读取文件中的数据

    前言:FileReader是一种异步文件读取机制,结合input:file可以很方便的读取本地文件。 input:file 在介绍FileReader之前,先简单介绍input的file类型。 input type=\\\"file\\\" id=\\\"file\\\" input的file类型会渲染为一个按钮和一段文字。点击按钮可打开文件选择窗口,文字表示对文件的描述(大部分情

    2024年02月11日
    浏览(46)
  • 前端--文件上传--文件切片--利用FileReader()中的readAsDataURL()做缩略图--多文件上传--formData--切片上传实现

    可以把File 类型 转换为 Blob 类型,因为 File 是Blob的子类 Blob是不可修改也是无法读取里面的内容的。但是Filereader就提供了读取Blob里面内容的方法。 1.做缩略图用readAsDataURL 给图片显示一下 可以利用切片来实现上传半张图片的效果 2. 也可以做文本预览(利用readAsText)方式和上

    2023年04月20日
    浏览(63)
  • 操作系统进程调度算法——先来先服务、时间片轮转、优先级调度算法

    (1)算法内容: 先来先服务调度算法是一种最简单的调度算法,可以应用于高级调度也可以运用于低级调度。高级调度时,FCFS调度算法按照作业进入后备作业队列的先后顺序选择作业进入内存,即先进入后备作业队列的作业被优先选择进入内存,然后为选中的作业创建进程

    2023年04月21日
    浏览(44)
  • 操作系统:实验一:进程调度实验——最高优先数优先的调度算法以及先来先服务算法 源码

    一、实验目的 (1)了解进程实体PCB结构; (2)理解进程不同状态和状态之间的转换过程; (3)掌握优先数的调度算法和先来先服务算法; 二、实验内容与要求 设计一个有 N个进程共行的进程调度程序 四、实验步骤 (1)实验设计 进程调度算法: 采用最高优先数优先的调

    2024年02月06日
    浏览(45)
  • 【操作系统】-- 先来先服务算法(FCFS)、短作业优先算法(SJF)、高响应比调度算法(HRRN)

    1、算法思想 主要从 公平 的角度考虑。 2、算法规则 按照 作业/进程 到达的 先后顺序 进行服务。 3、是否可抢占 非抢占式算法。 4、是否可导致饥饿 不会导致饥饿。 5、优缺点 优点:公平、算法实现简单。 缺点:对长作业有利,对短作业不利。 6、例题 例:各进程到达就绪

    2024年02月02日
    浏览(49)
  • 操作系统有关进程调度算法(含先来先服务,短作业优先,优先级调度算法和时间片轮转调度算法)

    本文采用的进程调度算法有:先来先服务,短作业优先,优先级调度算法和时间片轮转调度算法。 针对这四种算法,我采用的是建立数组结构体,如: 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。采用FCFS算法,每次从

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包