IO流

来源:互联网 发布:磁盘修复软件 编辑:程序博客网 时间:2024/06/05 23:43

文件字节输入流

     使用该流读取数据

          Public FileInPutStream()

一次读取一个字节:

           int by=0;

           while((by=文件名.read())!=-1){

system.out.println((char)by);

}              

 文件名.close();

    一次读取一个字节数组

byte[] bys=new byte[1024];

int len=0;

while((len=文件名.read(bys))!=-1){

System.out.println(new String(文件名,0,len));

}

使用文件字节输入流一次读取一个字节和一次读取一个字节数组的对比

  方式1:

                一次读取一个字节:

              FileReader fr=new FileReader(“fr.txt”) ;

              int by=0;

while((by.read())!=-1){

system.out.println((char)by);

}

方式2:  

FileReader fr=new FileReader(“fr.txt”) ;

byte[] bys=new byte[1024];

int len=0;

while((len=fr.read(bys))!=-1){

System.out.println(new String(bys,0,len));

}

 

复制文件

  

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

 

public class CopyDemo {

public static void main(String[] args)throws IOException {

//封装数据源

FileOutputStream fos=new FileOutputStream("D:\\b.txt");

//封装输出元

FileInputStream fis=new FileInputStream("C:\\a.txt");

 

int by=0;

while((by=fis.read())!=-1){

fos.write(by);

}

fis.close();

fos.close();

}

}

字节缓冲流:

  字节缓冲输入流:BufferedInputStream

       读数据:也是两种方式:读取数据的速率大于字节流的速率

  字节缓冲输出流;BufferedOutputStream

         刷新缓冲区的流:flush();上传是防止图片加载不完全

字节流和字符流的使用:

      当我们操作的是一个文本文件,优先采用字符流,如果文件读不懂,那么使用字节流,如音频视频文件.

字符输入流:Reader

          InputStreamReader=字节输入流+在编码格式

便捷类:FileReader

字符输出流:writer

      OutputStreamWriter=字节输出流+编码格式

FileWriter有一种构造方式:FileWriter(OutputStream out);追加写入

BufferedReader:字符缓冲输入流:特殊方法:

        public String readLine(){}

为什么字节缓冲不能直接对文件进行操作?

       缓冲流只是提供一个缓冲区,针对IO进行实现数据的传输,实际是通过底层基本流进行实现的,所以缓冲流不能直接对文件进行操作.

   字节流赋值文件有几种方式

    1:基本字节流一次读取一个字节       

   2:基本字节流一次读取一个字节数组

3:高效字节流一次读取一个字节            字节缓冲输入流

   4;高效字节流一次读取一个字节数组

FileInputStream-------------------------byte

InputStreamReader--------------------char

 

 

 

 

 

递归:   考点

        1:递归和File类中一些方法,Timer(定时器)

前提条件:1) 定义一个方法

              2)找当前需求中的规律

             3)找出口条件.

IO流中其他的一些流:ByteArrayInputStream

      toByteArray

打印流:

   字节打印流:PrintStream

字符打印流:PrintWriter

特点:1) 打印流不能操作数据元  ,只能操作目的地的数据

        2)打印流可以有自动书刷新功能

         3)打印流可以直接针对文本文件进行操作

随机访问流: RandomAccessFile

内存操作流:ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。

打印流

标准输入输出流

合并流:SequenceInputStream

读写数据.

序列化流:将对象以流的方式或者网络传输中的数据写数据,

对象------->流数据:ObjectOutputStream

反序列化:将流数据读取出来:ObjectInputStream

Implements Serializable实现序列化接口

 

序列化和反序列化考点:

1):将对象--->流对象----->对象,该对象所在的类要实现一个标记接口:serializable

     多线程有一个关键字:同步机制(synchronized)

2):序列化和反序列化生产的版本id不一致的时候,会出现异常

3):transient:修饰的变量不会被序列化

Properties:属性集合类,该类继承自Hashtable<k,v>,该类属于Map集合

import java.util.Properties;

import java.util.Set;

 

public class PropertiesDemo {

public static void main(String[] args) {

Properties p = new Properties();

p.put("李沁","22");

p.put("宋茜","23");

p.put("高圆","21");

Set<Object> keySet = p.keySet();

for(Object key:keySet){

System.out.println(key+"="+p.get(key));

}

System.out.println("--------------------------------");

Set<String> keySet1 = p.stringPropertyNames();

for(String key:keySet1){

String value = p.getProperty(key);

System.out.println(key+"="+value);

}

}

}