zoukankan      html  css  js  c++  java
  • 输入输出流

    一、InputStream 抽象类 

      InputStream是输入字节数据用的类,所以InputStream类提供了3种重载的read方法.Inputstream类中的常用方法: 

      (1) public abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。 若返 回值=-1说明没有读取到任何字节读取工作结束。 
      (2) public int read(byte b[ ]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的  
      (3) public int read(byte b[ ], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。  
      (4) public int available( ):返回输入流中可以读取的字节数。 注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用,   
      (5) public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节来读取  
      (6) public int close( ) :我们在使用完后,必须对我们打开的流进行关闭.  
     

          1) FileInputStream把一个文件作为InputStream,实现对文件的读取操作      
          2) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用  
          3) StringBufferInputStream:把一个String对象作为InputStream  
          4) PipedInputStream:实现了pipe的概念,主要在线程中使用  
          5) SequenceInputStream:把多个InputStream合并为一个InputStream

    代码:

      public class IOTest {

        static void testOne() throws Exception{
          File file=new File("E:/adb.txt");
          if(file.exists()){
             //构建一个输入流
             InputStream in=new FileInputStream(file);
               int size=in.available();
             System.out.println("文件大小:"+size);
             byte[] bytes=new byte[size];
             in.read(bytes);
             in.close();
             String str=new String(bytes);
             System.out.println("内容:"+str);
          }
        }
     
        static void testTwo() throws Exception{
          File file=new File("E:/adb.txt");
          if(file.exists()){
             //构建一个输入流
             InputStream in=new FileInputStream(file);
             OutputStream out=new FileOutputStream("F:/adb.txt");
             byte[] bytes=new byte[1024];//每次读取1024个字节
             int temp=0;
             while((temp=in.read(bytes))!=-1){
               out.write(bytes);
             }
             //关闭流
           out.flush();
             out.close();
                      in.close();
                      }
         }
         public static void main(String[] args) throws Exception {
            //testTwo();
            testOne();
         }
      }

     二、OutputStream 抽象类 

      OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。  
      1. public void write(byte b[ ]):将参数b中的字节写到输出流。  
      2. public void write(byte b[ ], int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。  
      3. public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。  
      4. public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。  
      5. public void close( ) : 关闭输出流并释放与流相关的系统资源。

        1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中  
            2) FileOutputStream:把信息存入文件中  
            3) PipedOutputStream:实现了pipe的概念,主要在线程中使用  
            4) SequenceOutputStream:把多个OutStream合并为一个OutStream 

        流结束的判断:方法read()的返回值为-1时;readLine()的返回值为null时。

  • 相关阅读:
    比较一下ASP、ASP.net、JSP和PHP的优点和缺点
    修改MSSQLServer的登陆方式
    ASP.NET获取IP和MAC代码(C#)
    RPM 五种基本的操作方式
    飞鸽TCP/IP 10106错误解决
    修复rpm命令(不小心删了rpm命令)方法
    Asp.Net连接ACCESS数据库相对路径问题 web.config中如何使用相对路径及在类文件中调用这个相对路径
    VMware下redhat linux 9使用NAT共享主机IP上网
    Visual Studio2005 + Visual SourceSafe 2005 实现团队开发、源代码管理、版本控制
    SQL2005安装出现“性能监视器计数器要求错误”的解决方案
  • 原文地址:https://www.cnblogs.com/shiyoushao/p/6082240.html
Copyright © 2011-2022 走看看