1. 抽象基类InputStream、OutputStream,不能实例化。

                               

•      InputStream类是基本的输入类。它定义了所有输入流所需的方法。

•       publicabstract int read() throws IOException

•       publicint read(byte b[]) throws IOException

•      public int read(byte b[],intoffset,int length) throws IOException

功能为从输入流中读数据。这一方法有几种重载形式,可以读一个字节或一组字节。当遇到文件尾时,返回-1。最后一种形式中的offset是指把结果放在b[]中从第offset个字节开始的空间,length为长度。

•      public int available() throwsIOException
输入流共有多少字节可读。注意此方法对InputStream的各派生类不一定都有效,有时会有返回零字节的错误结果。

•      public void close() throwsIOException
关闭输入流并释放资源。虽然java提供垃圾回收机制,当一个流不再使用时可以由运行系统自动关闭,但为了提高程序的安全性和稳定性,建议使用close()关闭。

•      public boolean markSupperted( )
返回布尔值,说明此流能否做标记或复位。

•      public synchronized void mark(intreadlimit)
为当前流做标记。其参数说明在标记失效前可以读多少字节,这个值通常也就设定了流的缓冲区大小。

•      public synchronized void reset()throws IOException
返回到上一次做标记处。

•      public long skip (long n) throwsIOEnception
从输入流跳过几个字节。返回值为实际跳过的字节数

2.

PublicFileOutputStream(String name)throws FileNotFoundException

PublicFileOutputStream(File file)throws FileNotFoundException

PublicFileOutputStream(String name,Boolean append)throws FileNotFoundException

Name为文件名,file为文件类File对象,append表示文件是否为添加的写入方式,append默认为false,false时为重写方式,即从头写入,覆盖原来文件内容。

 写的方法与读的一样。只不过这里用write。

3.

¯   字节流可以操作任何数据

¯   字符流使用的是字符数组;字节流使用的是字节数组

4.如果文件体积不是很大,可以这样操作。

byte[]buf = new byte[fis.available()];//创建一个刚刚好的缓冲区。但是这有一个弊端,就是文件过大,大小超出jvm的内容空间时,会内存溢出。

fis.read(buf);

System.out.println(new String(buf));

5.   文件类(File)

        一个File类的对象,表示磁盘上的文件和目录。它提供了与平台无关的方法来对磁盘上的文件或目录进行操作,包括:更改文件名、删除文件、列出目录下的文件以及文件对象属性的描述信息等。

ü    构造方法

       public   File(String path);

       public   File(String path,String name);

       public   File(File parent,String chile);

例如:

File f1  = newFile(“data.txt”);

File f2  = newFile(“\\D:”,“data.txt”);

File f3  = newFile(“\\D:”);

File f4  = newFile(f3,“data.txt”);

ü    静态常量

  由于不同操作系统的文件分隔符以及路径分隔符不同,因此,如果要获取当前系统的文件和路径的分隔符,可使用以下两个静态常量。

       publicstatic final char separatorChar;

       publicstatic final char pathSeparatorChar;

       publicstatic final char separator;

ü    其它方法

 (1).访问文件对象:

public StringgetName():返回文件对象名,不包含路径名

public StringgetPath():返回文件路径名,包含对象名

public StringgetAbsolutePath():返回文件绝对路径名,包含对象名

public StringgetParent():返回父文件对象名的路径名

public StringgetParentFile():返回父文件对象

(2)获得文件属性

public longlength();

public Booleanexists():测试指定的文件是否存在

public longlastModified():返回指定文件最后被修改的时间

(3)文件操作

public booleanrenameTo(Filedest):文件重命名

public booleandelete():删除空目录

(4)目录操作

publicboolean mkdir():创建指定目录,正常建立时返回true

publicString[] list():返回目录中的所有文件名字符串

public FilelistFiles():返回指定目录中的所有文件对象

6. 文件的随机访问类  

 对于InputStream类和OutputStream类来说,它们的实例都是顺序访问流,访问从头至尾顺序进行,而且输入流只能读不能写,输出流只能写不能读,即对一个文件不能同时进行读写操作,而RandomAccessFile类提供了另一种称为“随机访问文件”的方式。它有两个特点:

   对一个文件可以同时进行既读又写的操作。

   可以在文件中指定的任意位置读取数据或写入数据。

类声明:

public class PandomAccessFile extends Object implementsDataOutput,DataInput 

    他不是流  

     RandomAccessFile类可以对文件进行随机读写操作。

ü     创建一个RandomAccessFile对象

       RandomAccessFile(File file,String mode) ;

       RandomAccessFile(String name,String mode);

ü    读写数据的常用方法

读、写基本数据类型: readInt();writeInt(int n)等;

读、写UTF字符串: readUTF();writeUTF(String str);

读取文件中的一行: readLine();

ü     文件随机读写流的读取指针控制

long getFilePointer() ---得到当前的文件读取指针。

void seek(long pos) ---把指针从开始移动到pos位置。

long length() ---得到文件的长度(有多少个字节) 。

void setLength(long newLength)

7.对象流分为:对象输入流ObjectInputStream和对象输出流ObjectOutputStream

构造方法:

public ObjectInputStream()throws IOExcepetion,SecurityException

public ObjectInputStream(inputStream in)throws IOExcepetion,SecurityException

   readObject():从ObjectInputStream读取对象。

8.序列化(Serialization)是指并行数据转换成串行数据的处理过程,而对象序列化(Object Serialization)是指把对象的状态数据以字节流的形式进行处理,一般用于实现完全的对象。简单的说序列化可以理解为使用I/O对象流类型实现的对象读写操作。

   Java.io.ObjectOutputStream的writerObject()方法将内存中该对象的状态信息以有序二进制流(0、1序列)的形式输出到目标数据文件中,实现了信息的永久保存,这一工程即所谓的对象序列化。

   对象序列化的主要任务是写出对象的状态信息,并遍历改对象建立一个对其他对象的引用,递归的序列化所有被引用的其他对象。

   注意:并不是任何引用类型的数据(对象)都可以被序列化,只有实现了java.io.Serializable接口的类的对象才可以序列化,这主要出于安全性考虑,一些封装敏感信息或时效性很强的信息的类则不建议支持序列化,以避免出现泄漏或消息失效问题。在java语言规范中规定了Serializable接口的实现类均应该提供无参的构造方法,以供可能的反序列化操作,系统重建对象时自动调用,不过这一规则并未得到严格的贯彻。

在对象序列化的过程中,其所属类的static属性和方法代码是不会被序列化的,因为static属性为整个类共有,不应因一个对象的“沉浮”而受影响,而方法代码是一成不变的,反序列化时只要在运行环境中找到一份其所属的类文件即可(注意必须是当初序列化操作时使用的同一版本.class文件,如果中间进行过修改并重新编译,则反序列化时会出错)对于个别不希望被序列化的非static属性(实例变量),也可以在属性声明时使用transient关键字进行表明。

 在序列化时static和transient属性均被略过,反序列化重构对象时,对象的这些属性被默认初始化和显示初始化处理。其中static属性如果已经存在,则维持原状,不再进行初始化处理。

转载于:https://www.cnblogs.com/yangkai-cn/archive/2012/05/15/4017541.html

心得---字节流、文件操作、对象序列化相关推荐

  1. VBScript文件操作对象FileSystemObject大全

    基本运算 + 数字加法及字符串连接 - 数字减法 * 数字乘法 / 数字除法 Mod 求余数 \ 求商数 & 字符串连接 ^ 次方 = 相等 <> 不相等 >= 大于或等于 ...

  2. uniapp 流文件pdf_uniapp写入字节流文件bytes

    1. //文件的写入操作传入要写入文件名,base64 function lzFileWriter(base64,fileName) { return new Promise((result,reje ...

  3. Learn day3 深浅拷贝/格式化/字符串/列表/字典/集合/文件操作

    1. pass break continue # ### pass break continue # (1) pass 过 """如果代码块当中,什么也不写,用pass来 ...

  4. plist文件读写,序列化与反序列化,文件的读写[xcode4.4.1]

    这篇学习目标: plist文件读写 对象序列化与反序列化 本地文件的读写 iCloud存储的API 引言 在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:Prop ...

  5. HTML5 本地文件操作之FileSystemAPI整理(二)

    一.文件目录操作 1.DirectoryEntry对象 属性: 1.isFile: 操作对象的是否为文件,DirectoryEntry对象固定其值为false 2.isDirectory: 操作对象是 ...

  6. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  7. HTML5 本地文件操作之FileSystemAPI整理(一)

    一.请求配额 DeprecatedStorageInfo对象 window.webkitStorageInfo:当使用持久存储模式时需要用到该对象的接口 方法: 1.requestQuota(type ...

  8. 【python教程】IO文件操作的常见用法

    首先创建一个文件操作对象: f = open(file, mode, encoding) file指定文件的路径,可以是绝对路径,也可以是相对路径 文件的常见mode: mode = "r& ...

  9. python文件操作的一般步骤_Python基础之文件操作

    ​ 应用程序运行过程中产生的数据最先都是存放于内存中的,若想永久保存下来,必须要保存于硬盘中.应用程序若想操作硬件必须通过操作系统,而文件就是操作系统提供给应用程序来操作硬盘的虚拟概念,用户或应用程序 ...

  10. Python中的文件操作和异常

    Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...

最新文章

  1. C++类成员函数重载问题
  2. 基于机器学习的捡球机器人设计与实现(探索)第3篇——opencv基础知识学习(2019-02-02)
  3. 大商超的2020:转型、收紧、试新
  4. Spring Boot AOP记录用户操作日志
  5. JAVA入门级教学之(对象和引用)
  6. matlab中instr,MATLAB 串口通信
  7. Linux shell 字符串匹配
  8. python怎么调用接口失败_python 调用接口
  9. PyCharm——如果不小心修改了第三方库文件,怎么办?
  10. 吊炸天!15岁成杀人犯,监狱里学编程,37岁获释后年薪70万
  11. 数组中大于等于左侧所有数,小于等于右侧所有数的数
  12. 我的世界1.12.2java下载_我的世界1.12.2电脑版下载
  13. 番茄时间管理法(Pomodoro Technique):一个番茄是如何让你工作更有效率的
  14. 股票python量化交易002-常见量化指标(基本面)
  15. 人才测评技术与应用【2】
  16. 吴恩达深度学习笔记-布置机器学习项目(第4课)
  17. 互联网晚报 | 2月16日 星期三 | 小米回应裁员10%传闻;中国冬奥军团金牌数和奖牌数创新高;马斯克捐赠57亿美元特斯拉股票...
  18. XStream使用方法
  19. 深度学习之PyTorch——Deep NN实现手写MNIST数字分类
  20. 苯酚物理化学性质及用途

热门文章

  1. 1个字,绝! -- CNN中十大令人拍案叫绝的操作
  2. springboot学习笔记(十)
  3. STM32开发 -- 可调直流稳压电源
  4. UNIX再学习 -- exec 函数族
  5. hdu1754(树状数组求最值问题)
  6. hdu1272(简单并查集)
  7. Bit-Z开放零门槛做市商计划 最高返100%交易手续费
  8. Breaking the Ledger Security Model
  9. mysql handlers,2 Handlers
  10. mysql免安装版net不是_MYSQL 免安装版的环境配置