IO 字节输入流
1:我使用while遍历
用循环来遍历文件里的数据
读取性能很差
读取汉字和维语字 会乱码 无法避免的
流使用完毕之后 必须关闭 释放系统资源
out.close();//关闭流
package IO_TEST;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class fileInmputStreamTest {
public static void main(String[] args) throws Exception {
// FileInputStream 字节输入流
// InputStream is = new FileInputStream(new File("\\src\\mamat01.txt"));
InputStream is = new FileInputStream(("src/mamat01.txt")); //缩写 推荐使用
//读取字节数据
// public int read (); 每一次读取一个字节返回 如果招不到数据 返回(-1)
/*int i1= is.read();
System.out.println((char)i1);
int i2= is.read();
System.out.println((char)i2);
int i3= is.read();
System.out.println((char)i3);
*/
//用循环来遍历文件里的数据
int Q; //记住变量
while ((Q=is.read())!=-1){
System.out.print((char)Q);
}
//读取性能很差
//读取汉字和维语字 会乱码 无法避免的1
//流使用完毕之后 必须关闭 释放系统资源
is.close();
}
}
2:使用字节数组读取
性能提升但是 还是无法避免汉字和维语字
package IO_TEST;
import java.io.FileInputStream;
import java.io.InputStream;
public class fileInmputStreamTest2 {
public static void main(String[] args) throws Exception {
//目标:掌握 FileInputStream 读取多个字节
InputStream is = new FileInputStream("src/mamat02.txt");
/*
//读取文件中的多个字节
byte[] buffer=new byte[3];
int lun = is.read(buffer);
String st=new String(buffer,0,lun) ;
System.out.println(st);
System.out.println("当前读取的字节数量:"+lun);
//2 读取多少 列出多少
byte[] buffer1=new byte[2];
int lun1 = is.read(buffer);
String st1=new String(buffer ,0,lun1) ;
System.out.println(st1);
System.out.println("当前读取的字节数量:"+lun1);*/
//性能提升了
//还是无法避免汉字和维语字
byte[] buffer=new byte[3]; //数组 3个字节
int lun; //记住变量
while ((lun=is.read(buffer))!=-1){
var st=new String(buffer, 0, lun);
System.out.print(st);
}
is.close(); //关闭流
}
}
3:使用文件输入流一次读完文件的全部字节
package IO_TEST;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class fileInmputStreamTest3 {
public static void main(String[] args) throws Exception {
//1:使用文件输入流一次读完文件的全部字节
//InputStream 抽象类 FileInputStream 实现类
// 2: 创建输入管道与原文件接通
InputStream is = new FileInputStream(("src/mamat03.txt")); //缩写 推荐使用
/* //3: 准备一个字节数组 大小与文件的一样大
//创建一个文件对象
File f=new File("src/mamat03.txt");
//获取文件的大小
long size=f.length();
//创建字节数组对象
byte[] buffer=new byte[(int) size];
int len = is.read(buffer);
System.out.println(new String(buffer));
System.out.println(len);
System.out.println(size);*/
byte[] buffer= is.readAllBytes();
System.out.println(new String(buffer));
is.close();
}
}
1:字节输出流
OutputStream字节输出流
package IO_TEST;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class fileOutputStreamTest {
//目标:掌握文件输出流fileOutputStream 的作用
public static void main(String[] args) throws Exception {
// 1:创建一个字节流输出流管道与目标文件接通
//默认是覆盖 原来的数据
//默认是false
//改成true 追加数据管道
OutputStream out=new FileOutputStream("D:\\untitled1\\src\\Outmamat.txt",true);
//2:写入字节数字
out.write(97); ///97代表a
out.write('b'); //b也是一个字节
//用一个字节的时候有不要写汉字和维吾尔字 出现会乱码
byte[] bytearr="我爱你中国abc".getBytes();
out.write(bytearr);
out.write(bytearr,0,15);
//字节数组 开始索引 多少个字节
//换行符号
out.write( "\r\n".getBytes());
out.close();//关闭流
}
}