java文件io,java文件io流原理

本文目录一览:

java的几种IO流读取文件方式

一、超类:

字节流: InputStream(读入流) OutputStream(写出流)

字符流:    Reader(字符 读入流)    Writer (字符写出流)

二、文件操作流

字节流: FileInputStream  ,FileOutputStream

字符流: FileReader, FileWriter(用法与字节流基本相同,不写)

//1.指定要读 的文件目录及名称

File file =new File(“文件路径”);

//2.创建文件读入流对象

FileInputStream fis =new FileInputStream(file);

//3.定义结束标志,可用字节数组读取

int i =0 ;

while((i = fis.read())!=-1){

//i 就是从文件中读取的字节,读完后返回-1

}

//4.关闭流

fis.close();

//5.处理异常

//1.指定要写到的文件目录及名称

File file =new File(“文件路径”);

//2.创建文件读入流对象

FileOutputStream fos =new FileOutputStream(file);

//3.定义结束标志

fos.write(要写出的字节或者字节数组);

//4.刷新和关闭流

fos.flush();

fos.close();

//5.处理异常

三、缓冲流:

字节缓冲流: BufferedInputStream,BufferedOutputStream

字符缓冲流:BufferedReader ,BufferedWriter

缓冲流是对流的操作的功能的加强,提高了数据的读写效率。既然缓冲流是对流的功能和读写效率的加强和提高,所以在创建缓冲流的对象时应该要传入要加强的流对象。

//1.指定要读 的文件目录及名称

File file =new File(“文件路径”);

//2.创建文件读入流对象

FileInputStream fis =new FileInputStream(file);

//3.创建缓冲流对象加强fis功能

BufferedInputStream bis =new BufferedInputStream(fis);

//4.定义结束标志,可用字节数组读取

int i =0 ;

while((i = bis.read())!=-1){

//i 就是从文件中读取的字节,读完后返回-1

}

//5.关闭流

bis.close();

//6.处理异常

//1.指定要写到的文件目录及名称

File file =new File(“文件路径”);

//2.创建文件读入流对象

FileOutputStream fos =new FileOutputStream(file);

//3.创建缓冲流对象加强fos功能

BufferedOutputStream bos=new BufferedOutputStream(fos);

//4.向流中写入数据

bos.write(要写出的字节或者字节数组);

//5.刷新和关闭流

bos.flush();

bos.close();

//6.处理异常

四、对象流

ObjectInputStream ,ObjectOutputStream

不同于以上两种类型的流这里只能用字节对对象进行操作原因可以看上篇的编码表比照原理

ObjectOutputStream对象的序列化:

将java程序中的对象写到本地磁盘里用ObjectOutputStream

eg:将Person类的对象序列化到磁盘

创建Person类

注1:此类要实现Serializable接口,此接口为标志性接口

注2:此类要有无参的构造函数

注3:一旦序列化此类不能再修改

class Person implements Serializable{

public Person(){}

}

2.创建对象流对象

注:要增强功能可以将传入文件缓冲流

ObjectOutputStream oos =new ObjectOutputStream(

new FileOutputStream(new File(“文件路径”)));

3.写入对象 ,一般会将对象用集合存储起来然后直接将集合写入文件

ListPerson list =new ArrayList();

list.add(new Person());

…(可以添加多个)

oos.writeObject(list);

4.关闭流,处理异常

oos.flush();

oos.close();

五、转换流:

这类流是用于将字符转换为字节输入输出,用于操作字符文件,属于字符流的子类,所以后缀为reader,writer;前缀inputstream,outputstream;

注 :要传入字节流作为参赛

InputStreamReader: 字符转换输出流

OutputStreamWriter:字符转换输入流

//1.获取键盘输入的字节流对象

inInputStream in =Stream.in;

/*2.用转换流将字节流对象转换为字符流对象,方便调用字符缓冲流的readeLine()方法*/

InputStreamReader isr =new InputStreamReader(in);

/*5.创建字符转换输出流对象osw,方便把输入的字符流转换为字节输出到本地文件。*/

OutputStreamWriter osw =new OutputStreamWriter(new

FileOutputStream(new File(“文件名”)));

/*3.现在isr是字符流,可以作为参数传入字符缓冲流中*/

BufferedReader br =new BufferedReader(isr);

/*4.可以调用字符缓冲流br的readLine()方法度一行输入文本*/

String line =null;

while((line =br.readLine()){

osw.write(line);//osw是字符流对象,可以直接操作字符串

}

注:InputStreamReader isr =new InputStreamReader(new “各种类型的字节输入流都行即是:后缀为InputStream就行”);

OutputStreamWriter osw =new OutputStreamWriter(new

“后缀为OutputStream就行”);

六、区别记忆

1.对象流是可以读写几乎所有类型的只要是对象就行,而字节字符流,只能读写单个字节字符或者字节字符数组,以上没有读写字节字符数组的;注意对象流只有字节流!

2.字符和字节循环读入的结束条件int i=0; (i =fis.read())!=-1

用字符数组复制文件(fr 读入流 ,fw写出流),字节流也是相同的用法

int i = 0;  char[] c = new char[1024];

while((i = fr.reade()) !=-1)){

fw.write(c,0,i);

}

123456

3.对象流里面套缓冲流的情景:

new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File(“文件路径”))));

4.记忆流及其功能的方法:

前缀表示功能,后缀表示流的类型;

比如说FileInputStream  前缀:File,表示操作的磁盘,后缀:intputstream,表示是字节输入流。

同理 FileReader:表示操作文件的字符流

ObjectInputStream :操作对象的字节输入流

5.拓展:获取键盘输入的字符的缓冲流的写法:

new BufferedReader(new InputStreamReader(System.in)));

将字节以字符形式输出到控制台的字符缓冲流的写法:

new BufferedWriter( new OutputStreamWriter(System.out))

java中怎么用io流读写文件

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class Test14 {

    public static void main(String[] args) throws IOException {

        String fPath = “C:/test.txt”;

        // 读

        BufferedReader br = new BufferedReader(new FileReader(fPath));

        System.out.println(br.readLine());

        br.close();// // 使用后记得关闭

        // 写

        BufferedWriter bw = new BufferedWriter(new FileWriter(fPath));

        bw.write(“写一段话到文件里”);

        bw.flush();

        bw.close();// 使用后记得关闭

    }

}

同学们知道Java中的IO是指什么?

一般指文件相关的操作。在Java中,使用文件流进行编码时,需要引入对应的JAR包,而其中最主要的类,像File、FileInputStream、FileOutputStream等等,大多都封装在IO这个包里面。所以Java中,说到IO相关的操作,一般情况下都会认为是文件相关的操作。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/275796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-17 16:06
下一篇 2024-12-17 16:06

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29

发表回复

登录后才能评论