IO体系结构之三

代码片段4

package IOTest;

import java.io.*;

/**

 * 输入输出流测试,原文件将不会被覆盖,而是像日志一样一直被写入

 * @author 黄端修改

 */

public class BaseIOv3 {

//程序主方法

public static void main(String args[])throws Exception{

BaseIOv3 bi=new BaseIOv3();

//读取我们当前正在编写的这个java源文件

String srcName="src\\IOTest\\BaseIOv3test.java.bak";

boolean result=bi.writeReadObject(srcName);

System.out.println("复制结果:"+result);

}

/**

 * 将一个对象写入到流中,再从流中读取出画

 * @param fileName:绿写入的文件名

 * @return ;是否写入成功

 * @throws Exception

 */

public boolean writeReadObject(String fileName)throws Exception{

//Customer类是一个实现Serializable接口的类

//我们在此保存并读取它的一个对象

Customer customer=new Customer();

customer.setName("abc");

FileOutputStream fos=new FileOutputStream(fileName);

//构造对象输出流

ObjectOutputStream out=new ObjectOutputStream(fos);

//保存对象

out.writeObject(customer);

out.flush();

out.close();

//读取对象

FileInputStream fis=new FileInputStream(fileName);

ObjectInputStream input=new ObjectInputStream(fis);

//需要强制转型,从流中读到的是一个Object类型的

Customer inCus=(Customer)input.readObject();

System.out.println("读取对象:"+inCus.getName());

return true;

}

}

代码片段5

package IOTest;

import java.io.*;

/**

 * 输入输出流测试

 * @author www.NetJava.cn

 */

public class BaseIOv4 {

//程序主方法

public static void main(String args[])throws Exception{

BaseIOv4 bi=new BaseIOv4();

bi.dataTypeStream();

}

/**

 * 向文件中按数据类型的长度写入数据并读取

 * @throws Exception

 */

public void dataTypeStream() throws Exception {

String fileName = "msg.conent";

FileOutputStream fos = new FileOutputStream(fileName);

DataOutputStream dos = new DataOutputStream(fos);

//按类型写入

dos.writeBoolean(true);

dos.writeByte((byte) 123);

dos.writeChar('J');

dos.writeDouble(3.141592654);

dos.writeFloat(2.7182f);

dos.writeInt(1234567890);

dos.writeLong(998877665544332211L);

dos.writeShort((short) 11223);

//按类型读取

DataInputStream dis = new DataInputStream(new FileInputStream(fileName));

System.out.println("\t " + dis.readBoolean());

System.out.println("\t " + dis.readByte());

System.out.println("\t " + dis.readChar());

System.out.println("\t " + dis.readDouble());

System.out.println("\t " + dis.readFloat());

System.out.println("\t " + dis.readInt());

System.out.println("\t " + dis.readLong());

System.out.println("\t " + dis.readShort());

}

}

代码片段6

package IOTest;

import java.io.Serializable;

public class Customer implements Serializable{

private String name;

public void setName(String name){

this.name=name;

}

public String getName(){

return name;

}

}

<!--EndFragment-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux的IO体系结构可以分为七层。首先是虚拟文件系统层(VFS层),它负责处理内核与各种文件系统的交互。不同的文件系统可能有不同的数据结构和方法,因此需要通过VFS层来统一接口[1]。 接下来是文件系统层,它包括各种具体的文件系统实现,如EXT4、NTFS等。文件系统层负责管理文件和目录的存储和访问。 在上面的层次之下是块设备层,它处理块设备(如硬盘)的读写操作。块设备层提供了缓存、调度、以及与设备驱动程序的交互。 接下来是设备驱动程序层,它负责与硬件设备进行通信。设备驱动程序将硬件抽象为逻辑设备,并提供相应的接口供上层调用。在非PC体系结构上,由于无法直接引用物理内存单元的线性地址来访问I/O共享存储器,Linux定义了一些依赖于体系结构的函数,如直接内存访问(DMA)。 再下一层是总线层,它负责管理硬件设备的连接和通信。总线层提供了一组标准接口,用于与设备进行通信。 设备层位于总线层之上,它将逻辑设备映射到实际硬件设备,并提供了一组通用的设备操作接口。 最底层是物理设备层,它包括了具体的硬件设备,如硬盘、网卡等。 总结起来,Linux的IO体系结构包括虚拟文件系统层、文件系统层、块设备层、设备驱动程序层、总线层、设备层和物理设备层。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [如何提高Linux下块设备IO的整体性能?](https://download.csdn.net/download/weixin_38705762/15468690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [深入理解 Linux 内核---I/O 体系结构和设备驱动程序](https://blog.csdn.net/u012319493/article/details/85097182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值