您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > linux/Unix相关 > java第6章 io流
第6章I/O:读和写课前思考1.如何读取硬盘上的某个文件内容?2.如何知道文件系统中有哪些目录和子目录?3.如何往硬盘上写文件?4.如何接收键盘输入?教学目标与外部设备和其它计算机进行交流的输入输出操作,尤其是对磁盘的文件操作,是计算机程序重要的功能,任何计算机语言都必须对输入输出提供支持。Java也不例外,它的输入输出类库中包含了丰富的系统工具,这些类被放在java.io包中。在该类库中,除了定义文件输入输出操作外,还定义了许多用来和其他外设进行信息交换的类。本章将详细介绍I/O类库中的基本内容,主要侧重于文件的输入输出管理和流的基本概念。流在计算机中,“流”的概念是1984年由C语言第一次引入的。“流”可以看作是一个流动的数据缓冲区,数据从数据源流向数据目的地。I/O与流I/O是程序设计中的重要问题,大部分的应用程序都需要I/O操作,比如从键盘获得用户输入、在屏幕输出运行结果、对磁盘文件进行读写等等。应用程序只有通过I/O操作才能实现与用户的交互及数据的处理及存储.在Java语言中,将不同类型的I/O抽象为流。所谓“流(stream)”,可以看作是数据在文件或程序之间的传递数据源程序据流数输入流和输出流一般来说,流有两种基本形式:输入流和输出流,根据程序是作为数据流的目的端还是源端来划分。程序首先要打开一个流,才能与数据文件进行通信。通过输入流,程序可以从数据文件读取数据,但不可向输入流中写入数据;反之,通过输出流,程序可以向数据文件中写入数据。程序与其他设备间的I/O也可以使用流,这时可将设备看作是一个数据文件。JavaI/O流类的组织模式输出流输出流抽象类文件缓冲区管道介质输入流抽象类输入流与介质相关的类低层次界面高层次界面java.io在Java开发环境中,主要是由包java.io中提供的一系列的类和接口来实现输入/输出处理。而标准输入/输出处理则是由包java.lang中提供的类来处理的,这些类又都是从包java.io中的类继承而来的。I/O类提供了低层次和高层次的界面。每一种介质都有一对与之相关联的输入输出类,它们提供低层次的面向数据序列(字符、字节)的界面。与介质相关的各个类都分别是输入输出抽象流类的子类,它们通常具有与介质相关的构造器及方法。I/O抽象类为所有与介质相关的具体输入输出类提供了一个统一的界面。反过来各个具体的与介质相关的输入输出类也扩展了抽象类,通过它们可以实现在具体介质上的输入输出操作I/O操作的一般步骤构造一个与介质相关的I/O对象,以提供一种低层次的方法将数据输入或输出到相应的介质;将与介质相关的对象强制类型转换为它的父类(即抽象I/O类),并利用该对象构造一个流对象。这样便建立起了流类对象与介质相关对象的关联;这时就可利用流对象的I/O方法进行相应介质上的数据读写。字节流与字符流从流中传输的数据单位分为两类:字节流从InputStream和OutputStream派生出来的一系列类,以字节(byte)为基本处理单位。字符流从Reader和Writer派生出的一系列类,以16位的Unicode码表示的字符为基本处理单位。java.lang.ObjectInputStreamSequenceInputStreamByteArrayInputStreamFileInputStreamPipedInputStreamFilterInputStreamPushbackInputStreamStringBufferInputStreamFileStreamTokenizerRandomAccessFileFileDescriptorOutputStreamByteArrayOutputStreamPipedOutputStreamFileOutputStreamFilterOutputStreamDataOutputStreamPrintStreamBufferOutputStreamLineNumberInputStreamBufferedInputStreamDataInputStream字节流InputStream类InputStream类定义了一套所有字节输入流所需的方法方法描述read()将数据读入流中skip()跳过流中的若干字节available()返回当前流中的可用字节mark()在流中标记一个位置reset()返回到流中的标记位置markSupported()返回一个boolean值,描述流是否支持标记和复位close()关闭流OutputStream类OutputStream类定义了一套所有字节输出流所需的方法。方法描述write()写数据到流flush()强制将被缓冲的内容写到输出close()关闭流字符流类Reader与Writer类Reader类的相关方法:voidclose()voidmark(intreadAheadLimit)booleanmarkSupported()intread()intread(char[]cbuf)intread(char[]cbuf,intoff,intlen)booleanready()voidreset()longskip(longn)Writer类的相关方法:voidclose()voidflush()voidwrite(char[]cbuf)voidwrite(char[]cbuf,intoff,intlen)voidwrite(intc)voidwrite(Stringstr)voidwrite(Stringstr,intoff,intlen)各种流的作用概述I/O类型流作用内存CharArrayReaderCharArrayWriterByteArrayInputStreamByteArrayOutputStream用来从内存读取数据或向内存写入数据StringReaderStringWriterStringBufferInputStream从内存里的某个String或StringBuffer读字符或字节管道PipedReaderPipedWriterPipedInputStreamPipedOutputStream实现一个输入、输出管道。管道可用于一个线程的输出连接到另一个线程的输入各种流的作用概述文件FileReaderFileWriterFileInputStreamFileOutputStream用于对本机文件系统上的一个件行读写联结N/ASequenceInputStream将多个输入流联结成为一个输入流对象串行化N/AObjectInputStreamObjectOutputStream将对象串行化数据转换N/ADataInputStreamDataOutputStream以一种与机器无关的格式读写原始数据类型各种流的作用概述计数LineNumberReaderLineNumberInputStream在读取时记录行数预览PushbackReaderPushbackInputStream带有“回推(pushback)”缓冲区的输入流打印PrintWriterPrintStream包含便捷的打印方法的流。各种流的作用概述缓冲BufferedReaderBufferedWriterBufferedInputStreamBufferedOutputStream缓冲流,用于在读写时进行数据缓冲过滤FilterReaderFilterWriterFilterInputStreamFilterOutputStream过滤流的抽象类接口。数据读写时对数据进行过滤在字节和字符之间转换InputStreamReaderOutputStreamWriter字节流和字符类间的转换桥梁文件流要对本机文件系统上的文件进行读写,需要使用文件流。Java的文件流类包括字符流的FileReader、FileWriter和字节流的FileInputStream、FileOutputStream。Java中文件的操作而要进行文件流操作,首先必须清楚java中关于文件的基本操作,下面我们进行详细介绍。文件与目录的描述类——FileFile类并不用来进行文件的读/写操作,它用来描述文件对象的属性,既可以表示文件,也可以表示目录。使用它提供的方法,我们可以得到所指对象的描述信息,包括名称、存在否、读/写权限、路径等等。需要注意的是,当我们在Windows环境使用路径时,其分隔符不能是单一的“\”符号,因为与C/C++相同,符号“\”已经被转意了。例如:c:\jbuilder3\java\bin路径是非法的,系统不会识别,正确的应该为c:\\jbilder3\\java\\bin或者直接使用反斜杠/来作为路径分隔符。如c:/jbilder3/java/bin文件描述类File提供了一种与机器无关的方式来描述一个文件对象的属性。文件的生成publicFile(Stringpath);publicFile(Stringpath,Stringname);publicFile(Filedir,Stringname);文件描述文件名的处理StringgetName();/*得到一个文件的名称(不包括路径)*/StringgetPath();//得到一个文件的路径名StringgetAbsolutePath();/*得到一个文件的绝对路径名*/StringgetParent();/*得到一个文件的上一级目录名*/StringrenameTo(FilenewName);/*将当前文件名更名为给定文件的完整路径*/文件描述文件属性测试booleanexists();/*测试当前File对象所指示的文件是否存在*/booleancanWrite();//测试当前文件是否可写booleancanRead();//测试当前文件是否可读booleanisFile();/*测试当前文件是否是文件(不是目录)*/booleanisDirectory();/*测试当前文件是否是目录*/文件描述普通文件信息和工具longlastModified();/*得到文件最近一次修改的时间*/longlength();//得到文件的长度,以字节为单位booleandelete();//删除当前文件目录操作booleanmkdir();/*根据当前对象生成一个由该对象指定的路径*/Stringlist();//列出当前目录下的文件File类的方法及变量方法及变量名功能描述publicFile(Filedir,Stringname)由指定的目录、名字创建该对象publicFile(Stringpath,Stringname)由指定的路径、名字创建该对象publicFile(Stringpath)由指定路径创建该对象publicstaticfinalStringpathSeparator返回系统的路径分隔符publicbooleancanRead()如果文件可读为真publicbooleancanWrite()如果文件可写为真publicbooleandelete()删除文件publicbooleanequals(Objectobj)文件比较,如是同一个文件则为真publicbooleanexists()指定的文件存在返回真publicStringgetAbsolutePath()得到文件的绝对路径publicStringgetName()得到文件名publicStringgetParent()得到父目录的名字publicStringgetPath()返回路径publicinthashCode()返回一个哈希码publicnativebooleanisAbsolute()如果是绝对路径返回真publicbooleanisDirectory()如果是目录则返回真publicbooleanisFile()如果是文件则返回真publiclonglastModified()返回最近一次修改时间publiclo
本文标题:java第6章 io流
链接地址:https://www.777doc.com/doc-7028002 .html