JAVA IO流

it2025-07-24  4


java.io.InputStream:字节输入流(硬盘->内存)

/* *@author MingxuDeng *@version 20202020年10月22日 java.io.InputStream:字节输入流 此抽象类表示字节输入流的所有类的超类。 定义了所有子类共性的方法: int read():从输入流中读取数据的下一个字节 int read(byte[] b)从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。 void close():关闭此输入流并关闭与该流关联的所有系统资源 java.io.FileInputStream extends InputStream FileInputStream:文件字节输入流 作用:把硬盘文件中的数据读取到内存中使用 构造方法: FileInputStream(String name) FileInputStream(File file) 参数:读取文件的数据流 String name:文件的路径 File file: 文件 构造方法的作用: 1.创建FileInputStream对象 2.会把FileInputStream对象指定构造方法中要读取的文件 读取数据的原理(硬盘->内存): java程序-->JVM-->OS读取数据的方法-->读取文件 字节输入流的使用步骤(重点): 1.创建FileInputStream对象,构造方法中绑定要读取的数据源 2.使用FileInputStream对象中的方法read,读取文件 3.释放资源。 */ import java.io.FileInputStream; import java.io.IOException; public class Demo01InputStream { public static void main(String[] args) throws IOException { // 1.创建FileInputStream对象,构造方法中绑定要读取的数据源 FileInputStream fis =new FileInputStream("E:\\ProgrammingWorkPlace\\Java\\src\\a.txt");//abc // 2.使用FileInputStream对象中的方法read,读取文件 //int read():读取文件中的一个字节并返回,读取到文件的末尾返回-1 /*int len=fis.read(); System.out.println(len);//97 len=fis.read(); System.out.println(len);//98 len=fis.read(); System.out.println(len);//99 len=fis.read(); System.out.println(len);//-1 len=fis.read(); System.out.println(len);//-1 */ /* 发现以上代码重复,所以可以使用循环优化 不知道文件中有多少字节,使用while循环 while 循环结束条件,读取到-1的时候结束 */ int len=0; while(len!=-1) { System.out.println(len);//97 98 99 len=fis.read(); } len=0; while(len!=-1) { System.out.println((char)len);//abc len=fis.read(); } // 3.释放资源。 fis.close(); } }

java.io.FileOutputStream:字节输出流,一次写一个字节(内存->硬盘)

/* *@author MingxuDeng *@version 20202020年10月22日 java.io.FileOutputStream:字节输出流 使用步骤(重点): 1.创建一个FileOutputStream 对象,构造方法中传递写入数据的目的地; 2.调用FileOutputStream对象中的write方法,把数据写入到文件中; 3.释放资源。(流的使用会占用一定的内存,使用完毕要把内存清空,提高程序的效率) */ import java.io.FileOutputStream; import java.io.IOException; public class Demo01OutputStream { public static void main(String[] args) throws IOException { //1.创建一个FileOutputStream 对象,构造方法中传递写入数据的目的地; FileOutputStream fos =new FileOutputStream("E:\\ProgrammingWorkPlace\\Java\\src\\a.txt"); //2.调用FileOutputStream对象中的write方法,把数据写入到文件中; fos.write(97); //3.释放资源。(流的使用会占用一定的内存,使用完毕要把内存清空,提高程序的效率) fos.close(); } }

java.io.FileOutputStream:一次写多个字节

/* *@author MingxuDeng *@version 20202020年10月22日 java.io.FileOutputStream:一次写多个字节的方法: - public void write(byte[] b):将 b.length 字节从指定的字节数组写入此输入方法。 - public void write(byte[] b,int off,int len): 从指定的字节数组写入 len 字节,从偏移量 off 开始输出到此输出流。 */ package JAVASE; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arrays; public class Demo02OutputStream2 { public static void main(String[] args) throws IOException { //1.创建 FileOutputStream 对象,构造方法中绑定要写入数据的目的地 FileOutputStream fos = new FileOutputStream("E:\\ProgrammingWorkPlace\\Java\\src\\b.txt"); //调用 FileOutputStream 对象中的方法write,把数据写入到文件中 //在文件中显示100,写几个字节 fos.write(49); fos.write(48); fos.write(48); /* * - public void write(byte[] b):将 b.length 字节从指定的字节数组写入此输入方法。 * 一次写多个字节: * 如果写的第一个字节是正数(1-127),那么显示的时候会查询ASCII表 * 如果写的第一个字节是负数,那第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK) */ byte[] bytes = {65,66,67,68,69};//ABCDE // byte[] bytes = {-65,-66,-67,68,69};//烤紻E fos.write(bytes); /* - public void write(byte[] b,int off,int len): 把字节数组的一部分写入到文件中 int off : 数组的开始索引 int len : 写几个字节 */ fos.write(bytes,1,2);//BC /* 写入字符串的方法:可以使用 String 类中的方法把字符串,转换为字节数组 byte[] getBytes(): 把字符串转换为字节数组 */ byte[] bytes2 = "你好".getBytes(); System.out.println(Arrays.toString(bytes2));//[-28, -67, -96, -27, -91, -67] fos.write(bytes2);//你好 //释放资源 fos.close(); } }

java.io.FileOutputStream: 追加写/续写

/* *@author MingxuDeng *@version 20202020年10月22日 java.io.FileOutputStream: 追加写/续写 : 使用两个参数的构造方法 FileOutputStrream(String name,boolean append)创建一个向具有指定 name 的文件中写入数据的输出文件流 FileOutputStream(File file,boolean append)创建一个向指定File对象表示的文件中写入数据的文件输出流 参数: String name,File file:写入数据的目的地。 boolean append:追加写开关; true:创建对象不会覆盖原文件,继续在文件的末尾加写数据 false:创建一个新文件,覆盖原文件。 写换行:写换行符号 windows:\r\n linux:/n mac:/r */ package JAVASE; import java.io.FileOutputStream; import java.io.IOException; public class Demo03OutputStream2 { public static void main(String[] args) throws IOException { FileOutputStream fos =new FileOutputStream("E:\\ProgrammingWorkPlace\\Java\\src\\c.txt",true); for(int i=0;i<10;i++) { fos.write("你好".getBytes()); fos.write("\r\n".getBytes()); } fos.close(); } }
最新回复(0)