java中输入输出总结_java中输入输出总结

一、数据流的基本概念        流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个数人流,而屏幕则只是一个输出流。       java的标准数据流:标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种:        标准输入studin,对象是键盘。        标准输出stdout,对象是屏幕。        标准错误输出stderr,对象也是屏幕。 二、java.io包中的数据流和文件类        字节流:从InputStream和OutputStream派生出来的一系列类。这类流以字节(byte)为基本处理单位。           InputStream、OutputStream           FileInputStream、FileOutputStream           PipedInputStream、PipedOutputStream           ByteArrayInputStream、ByteArrayOutputStream           FilterInputStream、FilterOutputStream           DataInputStream、DataOutputStream           BufferedInputStream、BufferedOutputStream         字符流:从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。         Reader、Writer         InputStreamReader、OutputStreamWriter         FileReader、FileWriter         CharArrayReader、CharArrayWriter          PipedReader、PipedWriter          FilterReader、FilterWriter          BufferedReader、BufferedWriter          StringReader、StringWriter 三、字节流方法 InputStream 和OutputStream    read():从流中读入数据    skip():跳过流中若干字节数    available():返回流中可用字节数     mark():在流中标记一个位置     reset():返回标记过得位置    markSupport():是否支持标记和复位操作     close():关闭流     int read() :从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法)。       int read(byte b[]) :读多个字节到数组中。      int read(byte b[], int off, int len):从输入流中读取长度为len的数据,写入数组b中从索引off开始的位置,并返回读取得字节数。      write(int b) :将一个整数输出到流中(只输出低位字节,抽象)     write(byte b[]) :将字节数组中的数据输出到流中     write(byte b[], int off, int len) :将数组b中从off指定的位置开始,长度为len的数据输出到流中     flush():刷空输出流,并将缓冲区中的数据强制送出      close():关闭流 注:进行I/O操作时可能会产生I/O例外,属于非运行时例外,应该在程序中处理。如:型FileNotFoundException, EOFException, IOException 四、文件操作类的方法 File类 File类声明如下: public class File ectends Object implements Serializable,Comparable 构造方法: public File(String pathname) public File(File patent,String child) public File(String patent,String child) 文件名的处理     String getName( ); //得到一个文件的名称(不包括路径)     String getPath( ); //得到一个文件的路径名     String getAbsolutePath( );//得到一个文件的绝对路径名      String getParent( ); //得到一个文件的上一级目录名     String renameTo(File newName); //将当前文件名更名为给定文件的完整路径 文件属性测试     boolean exists( ); //测试当前File对象所指示的文件是否存在     boolean canWrite( );//测试当前文件是否可写      boolean canRead( );//测试当前文件是否可读     boolean isFile( ); //测试当前文件是否是文件(不是目录)     boolean isDirectory( ); //测试当前文件是否是目录 普通文件信息和工具      long lastModified( );//得到文件最近一次修改的时间     long length( ); //得到文件的长度,以字节为单位      boolean delete( ); //删除当前文件 目录操作     boolean mkdir( ); //根据当前对象生成一个由该对象指定的路径     String list( ); //列出当前目录下的文件 文件过滤器        类FilterInputStream和FilterOutputStream分别对其他输入/输出流进行特殊处理,它们在读/写数据的同时可以对数据进行特殊处理。另外还提供了同步机制,使得某一时刻只有一个线程可以访问一个输入/输出流。         类FilterInputStream和FilterOutputStream分别重写了父类InputStream和OutputStream的所有方法,同时,它们的子类也应该重写它们的方法以满足特定的需要 •     要使用过滤流,首先必须把它连接到某个输入/输出流上,通常在构造方法的参数中指定所要连接的流: �     FilterInputStream(InputStream in); �     FilterOutputStream(OutputStream out); 注:这两个类是抽象类,构造方法也是保护方法        类BufferedInputStream和BufferedOutputStream实现了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O流“捆绑”到缓冲流上,可以提高读写效率 •     在初始化时,除了要指定所连接的I/O流之外,还可以指定缓冲区的大小。缺省大小的缓冲区适合于通常的情形;最优的缓冲区大小常依赖于主机操作系统、可使用的内存空间以及机器的配置等;一般缓冲区的大小为内存页或磁盘块等地整数倍,如8912字节或更小。 �     BufferedInputStream(InputStream in[, int size]) �     BufferedOutputStream(OutputStream out[, int size]) 文件对话框     随机文件操作 于InputStream 和OutputStream 来说,它们的实例都是顺序访问流,也就是说,只能对文件进行顺序地读/写。随机访问文件则允许对文件内容进行随机读/写。在java中,类 RandomAccessFile 提供了随机访问文件的方法。类RandomAccessFile的声明为: public class RandomAccessFile extends Object implements DataInput, DataOutput      File:以文件路径名的形式代表一个文件      FileDescriptor:代表一个打开文件的文件描述      FileFilter & FilenameFilter:用于列出满足条件的文件      File.list(FilenameFilter fnf)      File.listFiles(FileFilter ff)      FileDialog.setFilenameFilter(FilenameFilter fnf) •     FileInputStream & FileReader:顺序读文件 •     FileOutputStream & FileWriter:顺序写文件 •     RandomAccessFile:提供对文件的随机访问支持 类RandomAccessFile则允许对文件内容同时完成读和写操作,它直接继承Object,并且同时实现了接口DataInput和DataOutput,提供了支持随机文件操作的方法  DataInput和DataOutput中的方法 •     readInt(), writeDouble()…      int skipBytes(int n):将指针乡下移动若干字节     length():返回文件长度     long getFilePointer():返回指针当前位置      void seek(long pos):将指针调到所需位置      void setLength(long newLength):设定文件长度 构造方法: RandomAccessFile(File file, String mode)      RandomAccessFile(String name, String mode) mode 的取值 �     “r” 只读. 任何写操作都将抛出IOException。 �     “rw” 读写. 文件不存在时会创建该文件,文件存在时,原文件内容不变,通过写操作改变文件内容。 �     “rws” 同步读写. 等同于读写,但是任何协操作的内容都被直接写入物理文件,包括文件内容和文件属性。 �     “rwd” 数据同步读写. 等同于读写,但任何内容写操作都直接写到物理文件,对文件属性内容的修改不是这样。 五、字符流的方法 Reader类和Writer类         在JDK1.1之前,java.io包中的流只有普通的字节流(以byte为基本处理单位的流),这 种流对于以16位的Unicode码表示的字符流处理很不方便。从JDK1.1开始, java.io包中加入了专门用于字符流处理的类,它们是以Reader和Writer为基础派生的一系列类 同类InputStream和OutputStream一样,Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类InputStream和OutputStream类似,只不过其中的参数换成字符或字符数组 Reader类 •     void close() •     void mark(int readAheadLimit) •     boolean markSupported() : •     int read() •     int read(char[] cbuf) •     int read(char[] cbuf, int off, int len) •     boolean ready() •     void reset() •     long skip(long n) Writer类 •     void close() •     void flush() •     void write(char[] cbuf) •     void write(char[] cbuf, int off, int len) •     void write(int c) •     void write(String str) •     void write(String str, int off, int len)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值