IO流常见的流

IO流

一、字节流

  • 字节输入流 InputStream 读
  • 字节输出流 OutputStream 写
1.写入数据 FileOutputStream
  • 构造方法
    FileOutputStream(File file)
    FileOutputStream(String name)
  • 写的方法
    • **public void write(int b):写一个字节 **
    • publicvoid write(byte[] b):写一个字节数组
2.读取数据 FileInputStream
  • 构造方法
    • FileInputStream(File file)
    • FileInputStream(String name
4.高效字节流
  • 构造方法
    • BufferedOutputStream(OutputStream out) 写数据
    • BufferedInputStream(InputStream in) 读取数据

二、字符流

1.写入数据 OutputStreamWriter
  • 构造方法
    • OutputStreamWriter(OutputStream out) :根据默认编码(GBK)把字节流的数据转换为字符流
    • OutputStreamWriter(OutputStream out,String charsetName): 根据指定编码把字节流数据转换为字符流
      • 例子:OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(“a.txt”));
  • 写的方法
    • public void write(int c) 写一个字符
    • public void write(char[] cbuf) 写一个字符数组
    • public void write(char[] cbuf,int off,int len) 写一个字符数组的 一部分
    • public void write(String str) 写一个字符串
    • public void write(String str,int off,int len) 写一个字符串的一部分
2.读取数据 InputStreamReader
  • 构造方法
    • InputStreamReader(InputStream is) :用默认的编码(GBK)读取数据
    • InputStreamReader(InputStream is,String charsetName): 用指定的编码读取数据
      • 例子: InputStreamReader in = new InputStreamReader(new FileInputStream(“a.txt”));
  • 读取方法
    • public int read() 一次读取一个字符
    • public int read(char[] cbuf) 一次读取一个字符数组 如果没有读到 返回-1
3.高效字符流
  • 构造方法
    • 高效的字符输出流: BufferedWriter
      构造方法: public BufferedWriter(Writer w)
    • 高效的字符输入流: BufferedReader
      构造方法: public BufferedReader(Reader e)
    • **例子:BufferedReader br = new BufferedReader(new FileReader(“OutputStreamWriterDemo.java”)) ;
      BufferedWriter bw = new BufferedWriter(new FileWriter(“c.txt”)) **
4.字符流的特殊功能
  • BufferedWriter: public void newLine():根据系统来决定换行符 具有系统兼容性的换行符
  • BufferedReader: public String readLine():一次读取一行数据 是以换行符为标记的 读到换行符就换行 没读到数据返回null

三、其他流

1.数据输入流: DataInputStream
  • DataInputStream dis = new DataInputStream(new FileInputStream(“a.txt”));
2.数据输出流: DataOutputStream
  • DataOutputStream dos = new DataOutputStream(new FileOutputStream(“a.txt”));
3.内存操作流 这个流不操作文件,只操作内存中的数据
  • 操作字节数组
    • ByteArrayOutputStream
      • 构造方法 public ByteArrayOutputStream()
        • 例:ByteArrayOutputStream bos = new ByteArrayOutputStream();
    • ByteArrayInputStream
      • 构造方法 public ByteArrayInputStream(byte[] buf)
        • 例:ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
  • 操作字符数组
    • CharArrayWrite
      • 例:CharArrayWriter charArrayWriter = new CharArrayWriter();
    • CharArrayReader
  • 操作字符串 底层用的是StringBuffer
    • StringWriter
      • 例:StringWriter stringWriter = new StringWriter();
4.打印流 只能写
  • PrintStream 字节打印流
    • PrintStream out = System.out;
  • PrintWriter 字符打印流
  • new Scanner(new File()) 也可以从文件中扫描数据
5.随机输入流
  • RandomAccessFile 最大的特点,一个人 自己能读能写
    • 构造方法: RandomAccessFile(File file, String mode)
    • 例:RandomAccessFile rw = new RandomAccessFile(new File(“h.txt”), “rw”);
    • 获取文件指针的位置 long filePointer = rw.getFilePointer();
6.序列化流和反序列化流
  • 一个类对象,要想序列化成功,该类要实现 Serializable 这个标记接口
  • public static final long serialVersionUID =(数字)L;
  • 序列化:将一个对象保存到文件中
    • ObjectOutputStream;
      • 例: public ObjectOutputStream(OutputStream out)
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“obj.txt”)) ;
  • 反序列化:将文件中的对象,读取回来
    • ObjectInputStream
      • 例:public ObjectInputStream(InputStream in)
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(“obj.txt”)) ;
7.属性集合
  • Properties 继承自 Hashtable
    • 特有功能:
      • 赋值 map.setProperty(“键”, “值”);
      • 键找值 String 值 = map.getProperty(“键”); 通过键找值,如果没找到返回null
  • Properties的load()和store()功能
    • public void load(Reader reader): 读取键值对数据把数据存储到Properties中
    • public void store(Writer writer, String comments)把Properties集合中的键值对数据写入到文件中,
8.顺序流
  • SequenceInputStream
  • 构造方法:
    • SequenceInputStream(InputStream s1, InputStream s2)
    • SequenceInputStream(Enumeration<? extends InputStream> e)
9.压缩流
  • ZipOutputStream
    • 创建新的 ZIP 输出流 ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(“文件地址”));
    • 把压缩的源文件封装一个压缩条目,并放置到压缩流当中 zipOut.putNextEntry(new ZipEntry(srcFile.getName()));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值