取消网站备案号免费动画模板素材网站
web/
2025/10/3 15:59:22/
文章来源:
取消网站备案号,免费动画模板素材网站,自己做同城购物网站,用小程序做网站IO流之内存流#xff0c;打印流#xff0c;随机流
1、内存流
1、理解 内存流#xff08;Memory Stream#xff09;在计算机编程中通常指的是一种特殊的数据流#xff0c;它在内存中存储和操作数据#xff0c;而不是在外部存储#xff08;如硬盘、网络等#xf…IO流之内存流打印流随机流
1、内存流
1、理解 内存流Memory Stream在计算机编程中通常指的是一种特殊的数据流它在内存中存储和操作数据而不是在外部存储如硬盘、网络等上进行。内存流提供了对数据流如字节数组的访问就好像这些数据是存储在外部资源上一样但实际上它们是在内存中直接操作的。 2、特点 速度快由于数据在内存中所以读取和写入操作通常比磁盘I/O或网络I/O要快得多。方便性内存流提供了与文件流或网络流类似的接口使得开发者可以使用统一的模式来处理不同来源的数据。临时性内存流常用于存储临时数据这些数据在程序运行期间需要被操作但在程序结束后不再需要。 3、应用场景 序列化与反序列化对象可以序列化为字节数组并存储在内存流中之后可以从内存流中反序列化回对象。图像处理在处理图像时可以将图像数据加载到内存流中进行修改然后再保存回文件或发送到网络。压缩与解压缩数据可以在内存流中进行压缩或解压缩而不必先写入磁盘或网络。网络编程在网络编程中内存流可以用于暂存从网络接收的数据或准备要发送到网络的数据。 4、案例
1、内存输入流
package com.xx.neicun;import java.io.ByteArrayInputStream;
import java.io.IOException;public class Test01 {public static void main(String[] args) {//1.创建内存流输入对象ByteArrayInputStream bais new ByteArrayInputStream(123木头人.getBytes());//2.关闭资源try {bais.close();} catch (IOException e) {e.printStackTrace();}//3.读取数据//这里定义了一个名为bs的字节数组并初始化为长度为1024。这个数组将用于存储从输入流中读取的数据。byte[] bsnew byte[1024];//变量len将用于存储每次从输入流中读取的字节数。int len;try {//这是一个while循环它将一直执行直到bais.read(bs)返回-1。当read方法返回-1时表示输入流中没有更多的数据可读即已经到达了流的末尾。while((lenbais.read(bs))!-1){System.out.println(new String(bs,0,len));}} catch (IOException e) {e.printStackTrace();}}
}
2、内存输出流
package com.xx.neicun;import java.io.ByteArrayOutputStream;
import java.io.IOException;public class Test02 {public static void main(String[] args) throws IOException {//1.创建内存输出流对象ByteArrayOutputStream baos new ByteArrayOutputStream();//2.关闭资源内存流时程序到内存的通道关不掉的baos.close();//3.写入数据baos.write(123木头人.getBytes());//获取数据byte[] bs baos.toByteArray();System.out.println(new String(bs));//获取数据String str baos.toString();System.out.println(str);}
}
2、打印流
1、理解 打印流PrintStream 和 PrintWriter是用于方便地打印各种数据类型到输出流如文件、控制台等的类。这些类提供了许多重载的print()、println()和printf()方法允许你以不同的格式打印数据。 2、特点 PrintStream PrintStream是Java标准库中的一个类它扩展了OutputStream类并提供了方便的打印功能。通常你会使用System.out控制台输出或System.err错误输出这两个PrintStream的实例。 PrintWriter PrintWriter是另一个用于打印的类但它扩展了Writer类因此它用于字符输出流。PrintWriter比PrintStream更强大因为它支持字符编码并且可以很容易地处理字符数据。 3、案例
1、字节打印流
package com.xx.println;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
//打印流只有一个方向
public class Test01 {public static void main(String[] args) throws IOException {//1.创建打印流对象//PrintStream ps new PrintStream(xx.txt);//1.创建打印流对象将字节流转换为字节打印流//PrintStream ps new PrintStream(new FileOutputStream(xx.txt));//1.创建打印流对象将字节流转换为字节打印流末尾朱家PrintStream ps new PrintStream(new FileOutputStream(xx.txt,true));//2.写入数据ps.println(123muroyu);//关闭资源ps.close();}
}
2、字符打印流
package com.xx.println;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;public class Test02 {public static void main(String[] args) throws IOException {//1.创建字符流对象//PrintWriter pw new PrintWriter(xx.txt);//1/创建字符流对象将字节流转换为字符打印流//PrintWriter pw new PrintWriter(new FileOutputStream(xx.txt));//1.创建字符打印流将将字符流转换为字符打印流//PrintWriter pw new PrintWriter(new FileWriter(xx.txt));//1.创建字符打印流将将字符流转换为字符打印流末尾追加PrintWriter pw new PrintWriter(new FileWriter(xx.txt,true));//2写入数据pw.println(123木头);//3关闭资源pw.close();}
}
3、随机流
1、理解 随机流RandomAccessFile是一种特殊的文件流它允许对文件内容进行随机访问和读写操作。 RandomAccessFile是Java中的一个类它直接继承自Object类并且同时实现了DataInput和DataOutput接口。这个类提供了支持随机文件操作的方法不区分输入流和输出流对文件的访问一定要指定访问方式。通过RandomAccessFile程序可以直接跳转到文件的任意地方来读写数据这在网络请求中的多线程下载及断点续传等场景中非常有用。在RandomAccessFile内部有一个大的字节数组可以通过指针进行操控。当我们进行随机访问时让指针指向对应的字节就可以从当前字节开始读或写。总的来说随机流是一种非常灵活的文件流它可以大大提高对文件操作的效率。 2、四种模式 “r” (只读模式) : 使用只读模式打开文件只能对文件进行读取操作无法修改文件内容。如果文件不存在将会抛出FileNotFoundException。调用结果对象的任何write方法都将导致抛出IOException。 “rw” (读写模式) : 使用读写模式打开文件允许对文件进行读取和写入操作并且可以修改文件内容。如果文件不存在则尝试创建该文件。写入操作可能不会被立即同步到底层存储设备因此在系统崩溃时可能会丢失数据。 “rws” (同步读写模式) : 除了具有读写模式的功能外该模式还要求对文件的内容和元数据的每个更新都同步写入到底层存储设备。同步更新确保对文件的更改被安全地写入到底层的存储设备中从而降低了数据丢失的风险。rws选项确保内容和元数据如文件的最近更改时间戳等信息的持久化。 “rwd” (同步数据读写模式) : 与rws模式类似但只要求对“文件的内容”的每个更新都同步写入到基础存储设备而不要求同步元数据。这也降低了数据丢失的风险但可能不如rws模式那样全面保护数据。 3、案例
1、利用 随机访问流 将数据写入到文件
package com.xxio08;import java.io.IOException;
import java.io.RandomAccessFile;public class Test01 {/*** 知识点利用 随机访问流 将数据写入到文件* * 1)写入数字、英文、中文*/public static void main(String[] args) throws IOException {//1.创建流对象//这里创建了一个RandomAccessFile对象w并指定了文件名为xx.txt和访问模式为rw读/写。如果文件不存在它将被创建如果文件已存在则内容将被覆盖从文件开始处。RandomAccessFile w new RandomAccessFile(xx.txt, rw);//2.写入数据w.write(123abc木头人.getBytes());//3.关闭资源 w.close();}
}
2、利用 随机访问流 将数据写入到文件
package com.xx.io08;import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;public class Test02 {/*** 利用 随机访问流 将数据写入到文件* * 1)写入数字、英文、中文* 2)在文件末尾追加*/public static void main(String[] args) throws IOException {//1.创建流对象File file new File(xx.txt);RandomAccessFile w new RandomAccessFile(file, rw);//设置指针,文件末尾w.seek(file.length());//2.写入数据w.write(123abc木头人.getBytes());//3.关闭资源w.close();}
}
3、利用 随机访问流 读取文件里的数据
package com.xx.io08;import java.io.IOException;
import java.io.RandomAccessFile;public class Test03 {/*** 知识点利用 随机访问流 读取文件里的数据* * 1)读取数据*/public static void main(String[] args) throws IOException {//1.创建流对象, 只读RandomAccessFile r new RandomAccessFile(xx.txt, r);//2.读取数据byte[] bs new byte[1024];int len;while((len r.read(bs)) ! -1){System.out.println(new String(bs, 0, len));}//3.关闭资源r.close();}
}
4、利用 随机访问流 读取文件里的数据
package com.qf.io08;import java.io.IOException;
import java.io.RandomAccessFile;public class Test04 {/*** 利用 随机访问流 读取文件里的数据* * 1)读取数据* 2)从英文处开始读取*/public static void main(String[] args) throws IOException {//1.创建流对象 //只读RandomAccessFile r new RandomAccessFile(xx.txt, r);//设置指针从下标为3开始r.seek(3);//2.读取数据byte[] bs new byte[1024];int len;while((len r.read(bs)) ! -1){System.out.println(new String(bs, 0, len));}//3.关闭资源r.close();}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86298.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!