IO流之字节流
创始人
2025-06-01 04:29:59
0

 

 

public class 字节流 {public static void main(String[] args) throws IOException {/*写一段文本到文件中,暂时不写中文创建对象细节:1、是字符串表示的路径,或者是File对象都是可以的2、如果文件不存在不会创建一个新的文件,但是要保证父级路径是存在的3、如果文件已经存在,会清空文件写出数据细节:1、write()方法的参数是整数,但是对应写到本地文件上的实际是ASCII码上对应的字符(0-127)释放资源每次使用完流后都应释放资源流相当于在内存和程序之间建立了一条通道,当我们传递完数据需要砸掉这条通道*/FileOutputStream fos=new FileOutputStream("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt");fos.write(97);fos.close();}
}

字节流之写数据

         1、创建字节流输出对象


        细节:
        1、是字符串表示的路径,或者是File对象都是可以的
        2、如果文件不存在不会创建一个新的文件,但是要保证父级路径是存在的
        3、如果文件已经存在,会清空文件


        2、写出数据


        细节:
        1、write()方法的参数是整数,但是对应写到本地文件上的实际是ASCII码上对应的字符(0-127)


        释放资源


        每次使用完流后都应释放资源
        流相当于在内存和程序之间建立了一条通道,当我们传递完数据需要砸掉这条通道

FileOutputStream如何一次性输入多个数据

public class 字节流Input2 {public static void main(String[] args) throws IOException {/*write()                                 一次写一个字节数据write(byte[] b)                         一次写一个字节数组数据write(byte[] b,int off,int len)         一次创建一个字节数组的部分数据*///1、创建对象FileOutputStream fos=new FileOutputStream("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt");byte[] bytes={97,98,99,100};//参数一:从数组的哪个索引开始//参数二:录入几个数据fos.write(bytes,0,2);fos.close();}
}

FileOutputStream写数据的两个小问题

 换行写:


           在想要换行的位置写出一个换行符就可以了
            windows:\r\n
            Mac:\r
            linux:\n
        细节:
           在windows系统中,java对回车换行做出了优化,虽然完整的是\r\n。
           但是只要写其一,java就可以实现换行,因为代码会在底层自动补齐 

public class 字节流Output换行和续写 {public static void main(String[] args) throws IOException {/*换行写:再次写出一个换行符就可以了windows:\r\nMac:\rlinux:\n细节:在windows系统中,java对回车换行做出了优化,虽然完整的是\r\n。但是只要写其一,java就可以实现换行,因为代码会在底层自动补齐*///1、创建路径FileOutputStream fos=new FileOutputStream("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt");//2、写出数据String str="nihaonichifanlema";byte[] bytes=str.getBytes();//通过该方法将字符串转化做字节(整数)再放到一个数组中fos.write(bytes);//创建换行符String wrap="\r";byte[] bytes1=wrap.getBytes();fos.write(bytes1);//3、创建第二个数据String str2="666";byte[] bytes2=str2.getBytes();fos.write(bytes2);fos.close();}
}

 续写

想要续写,打开续写开关即可。

创建对象的第二个参数

默认false:表示关闭续写,此时创建对象会清空文件

手动传递true:表示开启续写,此时创建对象不会清空文件

 //1、创建路径
FileOutputStream fos=new FileOutputStream("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt",true);

字节流之读数据

1、创建字节流输入对象

细节:如果文件对象不存在,直接报错

2、读数据

细节1:一次读一个字节,读出来的数字是ASCII码表上对应的数字

细节2:读到文件末尾,read方法返回-1

3、释放资源

细节:每次使用流之后都要释放资源

public class 字节流Input1 {public static void main(String[] args) throws IOException {/*目的:读取文件中的数据创建对象细节:如果文件对象不存在,直接报错读取数据细节1:一次读一个字节,读出来的数字是ASCII码表上对应的数字细节2:读到文件末尾,read方法返回-1释放资源:细节:每次使用流之后都要释放资源*///1、创建对象FileInputStream fis=new FileInputStream("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt");//2、读取数据int read = fis.read();System.out.println(read);//3、释放资源fis.close();}
}

如何一次性读取多个字节?循环读取

当读取到文件末尾时,会返回-1,借此进行判断

public class 字节流Input循环读取 {public static void main(String[] args) throws IOException {//1、创建对象FileInputStream fis=new FileInputStream("/Users/XXX/IdeaProjects/basecode/day02/aaaa/a.txt");//2、循环读取/*read表示读取数据,并且每读取一个数据就移动一次指针*/int b;while ((b=fis.read())!=-1){System.out.print((char) b);}//3、释放资源fis.close();}
}

相关内容

热门资讯

新城控股王晓松:2026年公司... 中经记者 杨让晨 石英婧 上海报道“2026年,是国家‘十五五’规划的开局之年,也是新城的关键一年。...
新势力车企2025年成绩单:大... 红星资本局1月1日消息,2026年1月1日,新势力车企陆续公布了2025年全年的销售成绩单。红星资本...
《燕梳师院》盘点2025年中国... 2025年,中国保险业迈入高质量发展的关键转型期,“十五五”规划的开局为行业注入新动能。在科技赋能、...
《燕梳师院》发布2025年世界... 2025年,全球保险业在政策调控、市场整合、科技转型与风险应对等多维度迎来深度变革。从主要经济体的监...
岁末年初,国家拿出真金白银! 文/王恩博岁序更替之际,市场高度关注中国经济政策如何衔接。抓住这一关键时间窗口,近期各方面靠前发力,...
中国医药两家子公司补税6521... 中经记者 晏国文 卢志坤 北京报道2026年1月1日,中国医药(600056.SH)披露,下属全资子...
中国同辐子公司补缴税款2.71... 中经记者 晏国文 卢志坤 北京报道2025年12月31日,港股上市公司中国同辐(1763.HK)披露...
中国军号发布军事演习主题海报《... 本文转自【中国军号微博】; 中国人民解放军打“独”促统决不手软,将持续组织反分裂反干涉行动,坚决维护...
利空突袭!暴跌50%! 美股及印度股市,均有突发消息传来!北京时间2026年1月1日凌晨,在美股市场上,生物制药公司Corc...
两度出手全资控矿!盛新锂能拟2... 微成都报道12月30日晚间,盛新锂能(002240.SZ)发布公告称,公司拟通过全资子公司四川盛屯锂...