流概述与字节流输入输出

流概述与字节流输入输出,第1张

File类可以对文件或目录的属性进行 *** 作,但是File类不能访问文件的内容,即不能从文件中读取数据或者往文件里写数据。

读文件是指把文件中的数据读取到内存中。反之,写文件是把内存中的数据写到文件中。读写文件的工具是流。

流是指一连串流动的字符,是以先进先出的方式发送和接受数据的通道。 流分为输入流和输出流 。如果数据输入到内存,则称为输入流,如果从内存中输出则称为输出流。 java中的输出流主要由OutputStream和Write作为基类,而输入流则主要由InputStream和Reader作为基类。

在javaio包中,封装了许多输入、输出流的API。在程序中,这些输入、输出流类的对象称为流对象。可以通过这些流对象将内存中的数据以流的方式写入文件,也可以通过流对象将文件中的数据以流的方式读取到内存。

构造流对象往往会和数据源(文件)联系起来。 数据源分为源数据源和目标数据源。 输入流关联的是源数据源,输出流关联的是目标数据源。

输入\输出流又分为 字节流和字符流 两种形式。

字节流是8位通用字节流, 其基本单位是字节。字节流的基类是InputStream类和OutputStream类它们是抽象类。

字符流是16位Unicode字符流,基本单位是Unicode字符。 字符流最适合用来处理字符串和文本,因为它们支持国际上大多数的字符集和语言。字符流的基类是Reader类和Writer类,它们也是抽象类。

InputStream是一个抽象类,里面定义了字节输入流常用的方法。因为抽象类不能实例化,所以在实际中我们通常使用的都是它的子类FileInputStream类。

int read():从输入流中读取下一个字节数据;将数据源中的数据以一个字节一个字节的形式读入进来, 而且读进来之后会把这些字节对应的整数形式返回给你。 如果到了输入流的末尾,则返回-1。

int read (byte[] b):从输入流中读取数据,并将数据存储在缓冲区数组b中,返回实际读取的字节数( 注:这个方法在读的时候也是将读进来的字节以对应整数形式存储在数组中,当从数组中读取时,需要进行强制装换(char) )。如果到了输入流的末尾,则返回-1。

OuputStream是一个抽象类,里面定义了字节输出流常用的方法。因为抽象类不能实例化,所以在实际中我们通常使用的都是它的子类FileOuputStream类。

实例:

字节输出流:

    步骤:1指出目标文件 2创建数据输出流通道  3用数据输出流通道向文件写入数据   4关闭文件输出流对象。

创建FileOutputStream时注意事项:

        当创建FileOutputStream对象时,如果目标文件不存在,会自动创建目标文件。

        当创建FileOutputStream对象时,如果目标文件已经存在,且文件中有内容,若再向文件中添加内容的时候,会先清空文件内容,再向文件添加其他内容。

         当创建FileOutputStream对象时,如果目标文件已经存在,且文件中有内容,若想向文件中追加内容,则可以使用new  FileOutputStream(File file,append)的构造方法,若第二个参数为true,表示向目标文件末尾追加想要添加的内容。

        当利用FileOutputStream向文件写入内容的时候,虽然写出的是int类型的数据,但是写入文件的时候只能接收一个字节的数据,只是把低八位的二进制数据写出了,剩余的3个字节(24bits)被舍弃。

        每new一个FileOutputStream对象的时候,会有一个指针指向文件的开头,所以利用目标文件每创建一个FileOutputStream对象,都会指向目标文件的开头。

iostream头文件作用是 *** 作输入输出流的方法,比如读取一个文件,以流的方式读取。

C++语言不直接处理输入输出,而是通过一簇定义在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO *** 作,设备可以是文件、控制台窗口等。还有一些类型允许内存IO,即从string读取数据,向string写入数据。

头文件<iostream>定义了标准输入/输出流对象。包含了<iostream>也自动包含了<ios>、<streambuf>、<istream>、<ostream>和<iosfwd>。

其主要作用是让初学者有一个方便的命令行输入输出试验环境。iostream的设计初衷是提供一个可扩展的类型安全的IO机制。

iostream库的组成

iostream库的基础是两种命名为istream和ostream的类型,分别表示输入流和输出流。流是指要从某种IO设备上读出或写入的字符序列。术语“流”试图说明字符是随着时间顺序生成或消耗的。

标准库定义了4个IO对象。处理输入时使用命名为cin(读作see-in)的istream类型对象。这个对象也称为标准输入。处理输出时使用命名为cout(读作see-out)的ostream类型对象,这个对象也称为标准输出。

标准库还定义了另外两个ostream对象,分别命名为cerr和clog(分别读作“see-err”和“see-log”)。cerr对象又叫作标准错误,通常用来输出警告和错误信息给程序的使用者。而clog对象用于产生程序执行的一般信息。

输入输出流,代表的数据传输的方式,要么输入,要么输出,对象输入输出代表,传输的内容是对象,我生成了一个类的实例,这个实例的存在的方式只能是在内存里,我想把这个类的实例永久的记录下来,放在一个文档里,你就需要用对象输入输出流来把这个类的实例,写入到文档里去。这里你自己分别 类与实例的区别。需要注意的是,输入流 输出流 这两端都要有这个类的文件。你就可以把类的实例,通过socket传递给远端。这其实只是一种包装的方式,如果你想记录一个类的实例,你只要记住这个类的所有field的具体的值,就可以了,如果你想自己实现对象的输入输出的话,你需要考虑的问题有,怎么去存储field,怎么去读取field的值,等等一系列的问题。

1、创建一个控制台应用程序,用于演示string类的Contains包含方法。

2、在Main方法中定义一个string变量var str = "Hello, Hello World!"。

3、使用Contains方法,检测字符串str中是否含有he,Contains方法查找到指定内容就返回true,否则返回false。

4、使用Contains方法,检测字符串str中是否含有He。

5、在调试模式下运行,可以看到结果是“存在”,这就表示Contains方法判断存在是区分大小写的。

注意事项:

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。

以上就是关于流概述与字节流输入输出全部的内容,包括:流概述与字节流输入输出、FileOutputStream、iostream头文件的作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9779528.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存