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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux 日期转换时间戳_oracle日期转13位时间戳

    linux 日期转换时间戳_oracle日期转13位时间戳1.用时间戳显示当前时间:date+%s#date+%s16145919602.将时间戳转换成日期时间:date-d@1614591901#date-d@16145919012021年03月01日星期一17:45:01CST3.转换指定日期为时间戳:2021-03-0117:49:23#date-d’2021-03-0117:49:23’+%s16145921634.指定日期格式转换:date-d@1614592163 +”…

    2022年10月2日
    3
  • 基于python的电影推荐系统_python为什么叫python

    基于python的电影推荐系统_python为什么叫python好莱坞知名媒体THR《好莱坞报道者》,邀请了2800多名好莱坞影视从业人员,包括779名演员,365名制片人,268名导演等等,由他们选出自己最爱的剧集,最终汇总成为这个百大经典美(英)剧清单。看看你追的剧上榜了吗?看到第一名时,瞬间热泪盈眶!果然是他,最经典,没有之一!100、绝望主妇DesperateHousewives(2004-2012)ABC99、弗尔蒂旅馆FawltyTowe…

    2022年9月30日
    4
  • vim配置python开发环境_pycharm和vim哪个好

    vim配置python开发环境_pycharm和vim哪个好Vim是一款非常好用的IDE,特别是在Linux中。但是其的配置过程十分麻烦。

    2022年9月28日
    5
  • SqlServer 函数Declare通过传变量查询超慢解决办法

    SqlServer 函数Declare通过传变量查询超慢解决办法from参考:1,Declare传参查询速度慢,直接放入参数执行sql却快,求大牛给原因2,OPTION(RECOMPILE)提高带参数执行SQL语句的索引效率 遇到的问题:通过参数执行sql函数查询速度超慢示例示例代码:class=”lang:tsqldecode:true”>declare@prefixnvarchar(10)=’095-0021-‘;…

    2022年8月22日
    10
  • Linux下C语言 system函数返回值「建议收藏」

    Linux下C语言 system函数返回值「建议收藏」例:status=system("./test.sh");1、先统一两个说法:(1)system返回值:指调用system函数后的返回值,比如上例中status为system返回值(2)shell返回值:指system所调用的shell命令的返回值,比如上例中,test.sh中返回的值为shell返回值。2、如何正确判断test.sh是否正确执行?仅判断status是否==…

    2025年12月15日
    5
  • 浅谈 &0xFF操作

    浅谈 &0xFF操作在java.io.FilterOutputStream.DataOutputStream:与机器无关地写入各种类型的数据以及String对象的二进制形式,从高位开始写。这样一来,任何机器上任何DataInputStream都能够读取它们。所有方法都以“write”开头,例如writeByte(),writeFloat()等。java.io.FilterOutputStream.PrintSt

    2022年6月19日
    31

发表回复

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

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