import java.io.*;
import java.util.Arrays;
/*
* IO流
* data flow /data stream
*
*IO概述:
* 1.input 输入 读取数据 指的是从
* 2.output 输出 写出数据
* 输入
* 硬盘◉------------>内存
* 输出
* 硬盘<------------◉内存
*
*IO分类
* 按照流向
* 输入流 指的是从硬盘读取数据到内存中
* 字节输入流 以字节为单位读取数据
* 字符输入流 以字符为单位读取数据
*
* 输出流 指的是从内存写出数据到硬盘中
* 字节输出流 以字节为单位输出数据
* 字符输出流 以字符为单位输出数据
*
* 根据类型
* 字节流
* 字节输入流 以字节为单位读取数据 顶层父类 InputSream
* 字节输出流 以字节为单位输出数据 顶层父类 OutputStream
*
*
* 字符流
* 字符输入流 以字符为单位读取数据 顶层父类 Reader
* 字符输出流 以字符为单位输出数据 顶层父类 Writer
*
* 总结
* 1.字节流和字符流顶层父类都是抽象类
* 2.集合类的顶层都是接口
*
* */
public class Demo2 {
public static void main(String[] args) throws Exception {
//注意事项
//如果路径没有文件 会抛出异常
//创建对象
FileInputStream f= new FileInputStream("a.txt");
//一次读取一个字节数组
byte[] bys=new byte[4];//长度为3的空数组
int len;
while((len=f.read(bys))!=-1){
System.out.println(new String(bys,0,len));
}
f.read(bys);
System.out.println(Arrays.toString(bys));
System.out.println(new String(bys));
f.read(bys);
System.out.println(Arrays.toString(bys));
System.out.println(new String(bys));
f.read(bys,0,2);
System.out.println(Arrays.toString(bys));
System.out.println(new String(bys));
f.close();
}
private static void mm1() throws IOException {
//FileInputStream 读取数据
FileInputStream f = new FileInputStream("a.txt");
//一次读取一个字节数据 读取到文件末尾就会返回-1
int len;
while((len=f.read())!=-1) {
System.out.println((char)len);
}
f.close();
}
private static void m7() throws IOException {
FileOutputStream f=new FileOutputStream("a.txt",true);
f.write("jack".getBytes());
//换行
f.write("\r\n".getBytes());
f.write("rose".getBytes());
f.write("\r\n".getBytes());
f.write("历史".getBytes());
f.write("\r\n".getBytes());
f.write("世界".getBytes());
f.close();
}
private static void m6() throws IOException {
//数据流追加
//FileOutputStream f = new FileOutputStream("a.txt",true);
FileOutputStream f = new FileOutputStream(new File("a.txt"),true);
//拼接
f.write("rose".getBytes());
f.close();
}
private static void m5() throws IOException {
//注意:1.虽然参数int是4个字节 但是只会保留1个字节输出
//2.流操作完毕后 必须释放系统资源
FileOutputStream f = new FileOutputStream("a.txt");
//1.虽然参数int是4个字节 但是只会保留1个字节输出
// f.write(97);
//写97和353是一样的因为他只写1个字节
//97在内存中的形式 00000000 00000000 00000000 01100001
//353在内存中的形式 00000000 00000000 00000001 01100001
//f.write(353);
f.write("jack".getBytes());
f.close();
}
private static void m4() throws IOException {
//创建对象
FileOutputStream f= new FileOutputStream("a.txt");
f.write(98);
//刷新缓冲区数据
f.flush();
//关闭流释放资源
f.close();
}
private static void m3() throws IOException {
//创建输出流对象
FileOutputStream f=new FileOutputStream("a.txt");
//f.write(100);
//1使用write字节数组
// byte[] bytes={97,98,99,100};
// f.write(bytes);
//2使用write字节数组
byte[] bytes={97,98,99,100,103,104,105,106};
f.write(bytes,4,4);
f.close();
}
private static void m2() throws IOException {
//字节输出流 OutputStream 主要是从内存中写出数据到内存中
//子类 FileOutputStream
//创建对象
File file = new File("b.txt");
FileOutputStream f = new FileOutputStream(file);
//写出数据
f.write(97);
//完成流必须释放资源
f.close();
}
private static void m1() {
File file = new File("D:\\aaa\\a.txt");
long num,num1,num2;
num=(file.length()/1024);
num1=((file.length()%1024)/100);
num2=(((file.length()%1024)%100)/10);
System.out.println(num+"."+num1+""+num2+"kb");
}
}
java关于io流的使用及举例
最新推荐文章于 2024-11-09 12:43:52 发布