第一部分 字节输出流

//1.编码: 把文字转换成字符(使用指定的编码)
String name = "abc我爱你中国";
//byte[] bytes = name.getBytes();//以当前代码默认字符集进行编码(UTF-8) 3+5*3
byte[] bytes = name.getBytes("GBK");//指定编码
System.out.println(bytes.length);
System.out.println(Arrays.toString(bytes));

//2.解码: 把字符转换成对应的中文形式(编码前 和 编码后的字符集必须一致, 否则乱码)
//String rs = new String(bytes);//默认UTF-8
String rs = new String(bytes,"GBK");//指定GBK解码
System.out.println(rs);




//1. 创建一个文件字节输入流管道与源文件接通
//InputStream is = new FileInputStream(new File("io_project\\src\\data.txt"));
InputStream is = new FileInputStream("E:\\idea_java_project\\io_project\\src\\data.txt");

// //2. 读取一个字节返回 (每次读取一滴水)
// int b1 = is.read();
// System.out.println((char)b1);
//
// int b2 = is.read();
// System.out.println((char)b2);
//
// int b3 = is.read();
// System.out.println(b3);//读取完毕,返回-1

//3.使用循环改进
//定义一个变量记录每次读取的字符
int b;
while((b = is.read()) != -1){
System.out.print((char)b);
}
---------------------------------------------


目标: 使用文件字节输入流 每次读取一个字节数组的数据

public class FileInputDemo02 {
public static void main(String[] args) throws Exception{
//1.创建一个字节输入流管道与源文件接通
InputStream is = new FileInputStream("E:\\idea_java_project\\io_project\\src\\data.txt");

//2.要定义一个字节数组,用于读取字节数组
byte[] buffer = new byte[3];
int len = is.read(buffer);
System.out.println("读取了几个字节:"+len);
String rs = new String(buffer);
System.out.println(rs);

int len1 = is.read(buffer);
System.out.println("读取了几个字节:"+len1);
String rs1 = new String(buffer);
System.out.println(rs1);

int len2 = is.read(buffer);
System.out.println("读取了几个字节:"+len2);
String rs2 = new String(buffer,0,len2);
System.out.println(rs2);

//3. 改进使用循环, 每次读取一个字节数组
byte[] buffer = new byte[3];
int len ;//记录每次读取的字节数
while((len = is.read(buffer)) != -1){
//读取多少倒出多少
System.out.print(new String(buffer,0,len));
}

}
}
---------------------------
  1. 如何使用字节输入流读取中文内容输出不乱吗呢?

    定义一个与文件一样大的字节数组, 一次性读取完文件的全部字节

 

  1. 直接把文件数组全部读取到一个字节数组可以避免练吗, 是否存在问题?

    如果文件过大, 字节数组可能引起内存溢出.

//1.创建一个字节输入流管道与源文件接通
File f = new File("E:\\idea_java_project\\io_project\\src\\data.txt");
InputStream is = new FileInputStream(f);

//2.定义一个字节数组与文件的大小刚刚一样大
byte[] buffer = new byte[(int)f.length()];
int len = is.read(buffer);
System.out.println("读取了多少字节"+len);
System.out.println("文件大小"+f.length());
System.out.println(new String(buffer));

posted on   我要当程序源  阅读(45)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示