IO基础

8.5学习心得

1. I/O操作的一般步骤

(1)构造一个与介质相关的I/O对象,以提供一种低层次的方法将数据输入或输出到相应的介质;

(2)将与介质相关的对象强制类型转换为它的父类(即抽象I/O类),并利用该对象构造一个流对象。这样便建立起了流类对象与介质相关对象的关联;

(3)这时就可利用流对象的I/O方法进行相应介质上的数据读写。

2. 从流中传输的数据单位分为两类:字节流与字符流

  • 字节流

InputStreamOutputStream派生出来的一系列类,以字节(byte)为基本处理单位。

InputStream 类方法

OutputStream类方法

  • 实例:利用字节流将本程序拷贝至另一个文件acopy_of_java_file中
public static void main(String args[]) throws IOException{
     FileInputStream f1;
     FileOutputStream f2;
     f1=new FileInputStream("FileCopy.java");
     f2=new FileOutputStream("acopy_of_java_file");
     int temp;
     while((temp=f1.read())!=-1)
         f2.write(temp);
     f1.close(); 
     f2.close();  
}
  • 字符流

ReaderWriter派生出的一系列类,以16位的Unicode码表示的字符为基本处理单位。

Reader和Writer类方法

  • 实例:利用字符流将本程序拷贝至另一个文件acopy_of_java_file中
public static void main(String args[]) throws IOException{
     FileReader f1;
     FileWriter f2;
     f1=new FileReader("FileCopy.java");
     f2=new FileWriter("acopy_of_java_file");
     int temp;
     while((temp=f1.read())!=-1)
         f2.write(temp);
     f1.close(); 
     f2.close();  }
}

3. 文件描述

  • 文件的生成
1public File(String path);
(2public File(String path,String name);
(3public File(File dir,String name);
  • 文件的方法
String getName( );/*得到一个文件的名称(不包括路径)*/
String getPath( );//得到一个文件的路径名
String getAbsolutePath( );/*得到一个文件的绝对路径名*/
String getParent( );/*得到一个文件的上一级目录名*/
String renameTo(File newName);/*将当前文件名更名为给定文件的完整路径*/
  • 文件属性测试
boolean exists( );/*测试当前File对象所指示的文件是否存在*/
boolean canWrite( );//测试当前文件是否可写
boolean canRead( );//测试当前文件是否可读
boolean isFile( );/*测试当前文件是否是文件(不是目录)*/
boolean isDirectory( );/*测试当前文件是否是目录*/
  • 实例:通过类BufferedReader对文件实现按行读取
public static void main (String [ ] args) throws IOException {
    FileReader fr = new FileReader("ReadFile.java");
    BufferedReader br = new BufferedReader(fr);
    String line = br.readLine( );//以\r\n进行分段读取
    while (line != null) {
        System.out.println(line);
        line = br.readLine( );  
    }
    br.close( );
}

4. Java序列化与反序列化

  • Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。

  • 什么情况下需要序列化?

(1)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;

(2)当你想用套接字在网络上传送对象的时候;

(3)当你想通过RMI传输对象的时候;

  • 序列化作用

实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里);利用序列化实现远程通信,即在网络上传送对象的字节序列。

  • JDK类库中序列化的步骤

(1)创建一个对象输出流

ObjectOutputStream out = new ObjectOutputStream(new fileOutputStream(“D:\\objectfile.obj”));

(2)通过对象输出流的writeObject()方法写对象

out.writeObject(“Hello”);
out.writeObject(new Date());
  • JDK类库中反序列化的步骤

(1)创建一个对象输入流,它可以包装一个其它类型输入流,如文件输入流

ObjectInputStream in = new ObjectInputStream(new fileInputStream(“D:\\objectfile.obj”));

(2)通过对象输出流的readObject()方法读取对象

String obj1 = (String)in.readObject();
Date obj2 = (Date)in.readObject();

拓展:

  • python的基础用法

python的基础用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值