上海网站建设q479185700強蓝色通用营销型企业网站模板
上海网站建设q479185700強,蓝色通用营销型企业网站模板,检察门户网站建设方案,东营住房和城乡建设厅官网目录
前言#xff1a;
IO流介绍#xff1a;
IO流的常见方法#xff1a;
1.字节流类#xff1a;
2.字符流类#xff1a;
总结#xff1a; 前言#xff1a; IO流就是存入和读取数据的解决方案#xff0c;并且他是一个知识点很多的章节#xff0c;因此我们关于IO流…
目录
前言
IO流介绍
IO流的常见方法
1.字节流类
2.字符流类
总结 前言 IO流就是存入和读取数据的解决方案并且他是一个知识点很多的章节因此我们关于IO流的介绍会分为多篇来进行详解而掌握好IO流可以大大提高我们的效率简化我们的代码执行效率。
IO流介绍 在前文我们知道如果我们想要实现对于程序的存档功能就一共需要实现两个功能 1.将数据存到文件当中这也就是我们上一篇文章File类的作用 2.实现程序对文件数据的读取功能这也就是我们接下来几篇所介绍的IO流的作用 在Java中IO流Input/Output Stream是用于处理输入和输出的机制。它提供了读写数据的方式允许程序与文件、网络等交互。Java中的IO流分为字节流和字符流两种类型。
字节流操作以字节为单位进行输入和输出。字节流主要由InputStream和OutputStream两个抽象类及其各种实现类组成。常见的字节流类包括FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream等。
字符流操作以字符为单位进行输入和输出它可以直接操作Unicode字符。字符流主要由Reader和Writer两个抽象类及其各种实现类组成。常见的字符流类包括FileReader、FileWriter、BufferedReader、BufferedWriter等。 字节流可以操作所有类型的文件字符流只能操作纯文本文件。
IO流的常见方法
1.字节流类
1.FileOutputStream
FileOutputStream是Java IO库中用于将数据写入文件的字节输出流。它继承自OutputStream类并添加了一些特定于文件输出的方法。通过FileOutputStream我们可以将字节数据写入本地文件可以是单个字节字节数组或部分字节数组。
使用FileOutputStream的基本步骤如下 创建FileOutputStream对象通过调用FileOutputStream的构造函数指定要写入的文件路径和文件名称。例如FileOutputStream fos new FileOutputStream(file.txt); 写入数据使用FileOutputStream提供的write()方法将数据写入文件。有多个重载的write()方法可以使用。常见的方法包括 void write(int b)将指定的字节写入文件。void write(byte[] b)将指定字节数组中的所有数据写入文件。void write(byte[] b, int off, int len)将指定字节数组中的部分数据写入文件参数off表示数组的起始位置参数len表示要写入的字节数。例如使用write(byte[])方法将字符串数据写入文件 String data Hello, World!;
byte[] bytes data.getBytes();
fos.write(bytes);刷新数据如果需要将数据立即写入磁盘而不是等待缓冲区满或关闭流时才写入可以调用flush()方法。例如fos.flush(); 关闭流使用完毕后务必关闭FileOutputStream以释放资源。可以使用close()方法关闭。例如fos.close();
完整的示例代码如下
import java.io.FileOutputStream;
import java.io.IOException;public class FileOutputStreamExample {public static void main(String[] args) {try {FileOutputStream fos new FileOutputStream(file.txt);String data Hello, World!;byte[] bytes data.getBytes();fos.write(bytes);fos.flush();fos.close();System.out.println(Data has been written to the file.);} catch (IOException e) {e.printStackTrace();}}
}FileOutputStream还提供了其他一些方法如getFD()用于获取与流关联的文件描述符以及在特定位置写入数据的seek()方法等。
需要注意的是使用FileOutputStream时可能会抛出IOException或FileNotFoundExceptio等异常因此在使用时要进行适当的异常处理。
2.FileInputStream
FileInputStream是Java IO库中用于从文件中读取数据的字节输入流。它继承自InputStream类并提供了一些特定于文件输入的方法。通过FileInputStream我们可以从文件中读取字节数据可以是单个字节也可以是一组字节。
使用FileInputStream的基本步骤如下 创建FileInputStream对象通过调用FileInputStream的构造函数指定要读取的文件路径和文件名称。例如FileInputStream fis new FileInputStream(file.txt); 读取数据使用FileInputStream提供的read()方法来读取数据。有多个重载的read()方法可以使用。常见的方法包括 int read()读取一个字节的数据并返回该字节数据的整数表示0-255当到达文件末尾时返回-1。int read(byte[] b)从文件中读取一定数量的字节并将其存储在指定的字节数组b中并返回实际读取的字节数。读取到文件末尾时返回-1。int read(byte[] b, int off, int len)从文件中读取最多len个字节到指定的字节数组b中从数组的偏移量off开始并返回实际读取的字节数。读取到文件末尾时返回-1。例如使用read(byte[])方法读取文件中的数据并将其打印到控制台 FileInputStream fis new FileInputStream(file.txt);
byte[] buffer new byte[1024];
int bytesRead;
while ((bytesRead fis.read(buffer)) ! -1) {System.out.write(buffer, 0, bytesRead);
}关闭流使用完毕后务必关闭FileInputStream以释放资源。可以使用close()方法关闭。例如fis.close();
完整的示例代码如下
import java.io.FileInputStream;
import java.io.IOException;public class FileInputStreamExample {public static void main(String[] args) {try {FileInputStream fis new FileInputStream(file.txt);byte[] buffer new byte[1024];int bytesRead;while ((bytesRead fis.read(buffer)) ! -1) {System.out.write(buffer, 0, bytesRead);}fis.close();} catch (IOException e) {e.printStackTrace();}}
}FileInputStream还提供了其他一些方法例如available()返回还剩下多少可读取的字节数skip(long n)用于跳过指定数量的字节等。
需要注意的是使用FileInputStream时可能会抛出IOException或FileNotFoundException等异常因此在使用时要进行适当的异常处理。
2.字符流类 字符流可以用来解决读码问题因为汉字的编码并不是一个字节大小而如果我们在读码的时候按照字节流进行输出的话就会错误的把汉字编码转化成为乱码因此我们设计了字符流使得读码的时候不是按照字节来读取而是字符。 在Java中字符流类是用于读取和写入字符数据的类集合。它们都位于java.io包中常用的字符流类包括 FileReader和FileWriter用于读取和写入字符文件的字符流类。 FileReader用于读取字符文件如文本文件。它以字符为单位读取文件的内容。FileWriter用于写入字符文件如文本文件。它以字符为单位将数据写入文件。
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class CharacterStreamsExample {public static void main(String[] args) {try {// 创建FileReader对象并指定要读取的文件路径FileReader reader new FileReader(input.txt);// 创建FileWriter对象并指定要写入的文件路径FileWriter writer new FileWriter(output.txt);int character;// 逐字符读取文件内容并写入到输出文件中while ((character reader.read()) ! -1) {writer.write(character);}// 关闭流reader.close();writer.close();System.out.println(文件复制完成);} catch (IOException e) {e.printStackTrace();}}
} BufferedReader和BufferedWriter提供了缓冲功能加速字符输入输出操作。 BufferedReader用于读取字符数据并提供了缓冲功能可以提高读取效率。BufferedWriter用于写入字符数据并提供了缓冲功能可以提高写入效率。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class BufferedCharacterStreamsExample {public static void main(String[] args) {try {// 创建BufferedReader对象并指定要读取的文件路径BufferedReader reader new BufferedReader(new FileReader(input.txt));// 创建BufferedWriter对象并指定要写入的文件路径BufferedWriter writer new BufferedWriter(new FileWriter(output.txt));String line;// 逐行读取文件内容并写入到输出文件中while ((line reader.readLine()) ! null) {writer.write(line);writer.newLine(); // 写入换行符}// 关闭流reader.close();writer.close();System.out.println(文件复制完成);} catch (IOException e) {e.printStackTrace();}}
} InputStreamReader和OutputStreamWriter用于处理字节流和字符流之间的转换。 InputStreamReader将字节流转换为字符流。它可以指定字符集将字节解码为字符。OutputStreamWriter将字符流转换为字节流。它可以指定字符集将字符编码为字节。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class EncodingExample {public static void main(String[] args) {try {// 使用InputStreamReader将字节流转换为字符流FileInputStream fis new FileInputStream(input.txt);InputStreamReader reader new InputStreamReader(fis, UTF-8);int data;while ((data reader.read()) ! -1) {System.out.print((char) data);}reader.close();// 使用OutputStreamWriter将字符流转换为字节流FileOutputStream fos new FileOutputStream(output.txt);OutputStreamWriter writer new OutputStreamWriter(fos, UTF-8);writer.write(你好世界);writer.close();} catch (IOException e) {e.printStackTrace();}}
}
总结 本文我们介绍了IO流中的两大类字节流和字符流类的使用方法在实际的代码书写中我们也要根据实际情况来确定哪一个更加适合。
如果我的内容对你有帮助请点赞评论收藏。创作不易大家的支持就是我坚持下去的动力
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86223.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!