Java——流

Java——流

目录:

1.java流式输入输出原理

2.输入输出流的分类

3.缓冲流:BufferedWriter

4.转换流:InputStreamWrite

5.数据流:DataInputStream

6.Print流:PrintWriter

7.Object流(序列化):serializable接口

 

 

1.java流式输入输出原理

 

2.输入输出流的分类

按数据流的方向:输入流、输出流

按处理数据单位不同:字节流、字符流

按功能不同:节点流、处理流

 

InputStream的基本方法:

int read() throws IOException:

int read(byte [] buffer) throws IOException:

void close()  throws IOException:

 

OutputStream的基本方法:

void write() throws IOException:

void write(byte [] buffer) throws IOException:

void flush()  throws IOException:

void close()  throws IOException:在之前必写flush

 

Reader的基本方法(每次读两字节,即char):

和InputSteam对照相似

 

Writer的基本方法:

void wirte(String string)  throws IOException:

其余对照OutputStream

 

3.缓冲流:

对数据读写提供了缓冲的功能,提高了读写的效率。

BufferedInputStream:带缓冲区,相当于在普通读中套上了另一层管道进行缓冲处理。

bis.readLine():可以直接用来读取一行

FileInputStream fis=new FileInputStream("d:\\share\\HelloWorld.java");

BufferedInputStream bis=new BufferedInputStream(fis);

 

4.转换流:InputStreamWrite

可以把字节流转换成字符流,即可以使用InputStreamWriter包装InputStream,则可以直接写入字符串,即write(“qqqqq”)

InputStreamWriter就是把InputStream转化成Writer。

isw.getEncoding():获取编码方式

 

5.数据流:DataInputStream

DataInputStream用于读取java基本的数据类型。

用法writeFloat(float)、

readLong()等等。

ByteArrayOutputStream:在内存中申请一块空间进行读写,可用Data…包装。

 

6.Print流:

PrintWriter和PrintStream

特点:①重载了print和println。②不会抛出异常。③有自动flush功能。

FileWriter fw=new FileWriter("d:\\logfile.log",true);//true表示往文件后面添加内容,不覆盖

PrintWriter pw=new PrintWriter(fw);

pw.println("*****");//将****写入log文件

 

7.Object流(序列化):

直接将Object写入或读出。

transient关键字:类中被transient修饰的对象,不予考虑,即置为null或0读入。

serializable接口(序列化):标记性接口。译为“可被序列化的”,“标记”是给编译器看的,编译器看到就知道实现了此接口的类是可被序列化的。

T t=new T();//T类必须已经实现了Serializable接口,类中被transient修饰的对象,不予考虑,即置为null或0读入
t.k=8;
FileOutputStream fos=new FileOutputStream("d:\\test.dat");

ObjectOutputStream oos=new ObjectOutputStream(fos);//用Object..包装管道

oos.writeObject(t);

oos.flush();

oos.close();
//读时同理

//先写两个管道

T tRead=(T)ois=new ObjectInputStream(fis);
System.out.println("tread.k");

enternalizable接口(外部化):实现了本接口,可以自己实现序列化,而不是直接使用系统默认序列化。

 

转载于:https://my.oschina.net/u/3786691/blog/1785231

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101744.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月25日 下午4:00
下一篇 2021年5月25日 下午5:00


相关推荐

  • 父子组件传值方法

    父子组件传值方法vue组件间传值方法:ref、子传父、父传子、VueX、bus。

    2022年5月16日
    49
  • 大数据应用的现实案例

    大数据应用的现实案例互联网企业拥有大量的线上数据,而且数据量还在快速增长,除了利用大数据提升自己的业务之外,互联网企业已经开始实现数据业务化,利用大数据发现新的商业价值。以阿里巴巴为例,它不仅在不断加强个性化推荐、“千人千面”这种面向消费者的大数据应用,并且还在尝试利用大数据进行智能客户服务,这种应用场景会逐渐从内部应用延展到外部很多企业的呼叫中心之中。在面向商家的大数据应用中,以“生意参谋”为例,超过600万商家在利用“生意参谋”提升自己的电商店面运营水平。除了面向自己的生态之外,阿里巴巴数据业务化也在不断加速,

    2022年6月1日
    73
  • Vim安装与使用详细教程

    Vim安装与使用详细教程欢迎关注本人 Github https github com itgoyoVim 详细 Vim 快捷键大全 Vim 的配置以 spf 13 为例子项目地址 https github com spf13 spf13 vimVim 的安装 Linux nix MacOSXInstal

    2026年3月17日
    2
  • int和int32的区别_int float double char区别

    int和int32的区别_int float double char区别Java中没有Int32,Int64,,只有int,short,longJava中int就代表Int32,short就代表Int16,long就代表Int64首先,几个基本的关键字:Int16=short,占2个字节.-32768~32767Int32=int,占4个字节.-2147483648~2147483647Int64=long,占8个字…

    2022年8月15日
    6
  • Nginx学习——Nginx简单介绍和Linux环境下的安装

    Nginx 是一个俄罗斯的哥们开发的,并将其进行了开源。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝

    2022年2月26日
    300
  • 解决CentOS网卡重启失败方法

    解决CentOS网卡重启失败方法Linux 网卡重启失败方法

    2025年7月1日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号