Java-IO(字节流)
2022/4/9 9:49:02
本文主要是介绍Java-IO(字节流),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 字节输出流
步骤:
- 1.创建字节输出流对象
- 2.调用 write() 方法写入数据
- 3.释放资源
写入数据的三种方式
- public void write(int b)
- public void write(byte[] b)
- public void write(byte[] b,int off,int len)
代码如下:
public class FileOutputStreamDemo2 { public static void main(String[] args) throws IOException { //创建字节输出流对象 FileOutputStream fileOutputStream = new FileOutputStream("D:\\o.txt"); //public void write(int b) 写入的是数字,输出的是数字对应的Assic码 // fileOutputStream.write(99); // fileOutputStream.write(96); // fileOutputStream.write(35); // fileOutputStream.write(56); // public void write(byte[] b) 写入数组 byte[] bytes = {33,56,87,57,22,57,14,89,22}; // fileOutputStream.write(bytes); //public void write(byte[] b,int off,int len) fileOutputStream.write(bytes, 2, 3); fileOutputStream.close(); } }
注意事项:
换行问题:
- 1、没有换行,如何实现换行呢?
为什么上一个代码中没有进行换行呢?
因为我们在写数据的时候,只写了字节,没有写入换行符
如何实现呢?
理论上,我们每写完一部分的时候,就写一个换行符进行换行
注意,每一个系统对应的换行不大一样
Windows:\r\n
Mac: \r
Linux: \n
追加问题
- 2、每次运行写入的时候,会把上一次运行的数据进行覆盖,如何实现追加写入呢?
追加:在原有的文件内容上继续添加一些新的内容
覆盖:将原有的文件内容删掉,再添加一些新的内容
FileOutputStream(String name, boolean append) 创建文件输出流以指定的名称写入文件。
public class FileOutputStreamDemo3 { public static void main(String[] args) throws IOException { //创建字节输出流对象 //如果不添加后面的 append 参数的话。 默认的是 FALSE ,不追加写入 FileOutputStream fileOutputStream = new FileOutputStream("D:\\p.txt",true); //调用 write 方法写入数据 for (int i = 0; i < 5; i++) { fileOutputStream.write(("大数据,yyds"+i).getBytes()); fileOutputStream.write("sdfasdf".getBytes()); //添加换行操作 fileOutputStream.write("\r\n".getBytes()); } fileOutputStream.close(); } }
2. 字节输入流
步骤
字节输入流:ImputStream
子类:FileInputStream
- 1、创建字节输入流对象
- 2、调用方法读取数据
- 3、释放资源
FileInputStream的构造方法:
- FileInputStream(File file)
- FileInputStream(String name)
字节输入流读取对象读取数据的两种方式:
- public int read()
- public int read(byte[] b)
上代码
public class FileInputStreamDemo1 { public static void main(String[] args) throws IOException { //创建字节输入流对象 // File file = new File("D:\\a.txt"); // FileInputStream fileInputStream = new FileInputStream(file); FileInputStream fileInputStream = new FileInputStream("D:\\a.txt"); // public int read()读取 // System.out.println((char)fileInputStream.read()); // System.out.println((char)fileInputStream.read()); // System.out.println((char)fileInputStream.read()); // System.out.println((char)fileInputStream.read()); /* //我们发现,当文件的内容过多的时候,一个字节一个字节去读取,发现很麻烦,而且语句都是一样 //使用循环改进,使用哪一种循环呢? //因为我们不知道要循环多少次才能读到文件的末尾,所以采用while循环 //使用while循环,就得有一个循环条件 //想一下,这个循环条件是不是就是读到了末尾就不读 //如何使用代码表示读到文件末尾呢?如果达到文件的末尾, -1 。 //一次读取一个字节 */ int len = 0; while ((len = fileInputStream.read()) != -1){ System.out.println((char)len); } fileInputStream.close(); } }
字节输入流读取数据的第二种方法,一次读取一个数组
public class FileInputStreamDemo2 { public static void main(String[] args) throws IOException { //创建字节输入对象 FileInputStream fileInputStream = new FileInputStream("D:\\b.txt"); //创建字节数组,依据大小来读取 byte[] bytes = new byte[4]; int len = 0; while ((len = fileInputStream.read(bytes)) != -1){ System.out.println(new String(bytes, 0, len)); } } }
这篇关于Java-IO(字节流)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)