安卓集训营第七天---JAVA的IO流

来源:互联网 发布:星际战甲嗜血冲动算法 编辑:程序博客网 时间:2024/05/16 05:51

IO流

1. 流向分类:输入流,输出流(内存为中心)

2. 来源分类:文件流,内存流,网络流,控制台流(system.out/in)

3. 操作单元:字符流,字节流(字符流只能读文本,字节流可以读任何文件)

4. 设计模式:基础流,包装流

  5. Try(在此声明输入输出流,使用完毕后可自动关闭)

    {数据操作}Catch(){};

 

 

文件输出流:

FileOutputStream  fos = new FileOutputStream("asd.txt",append boolern);

Fos.wrint( int  n );

1. n只能 0  到 255 , 大于255只生效后八位 

2. append 追加,默认false,从头开始

 

字符输出流:

outputStreamwrite osw = new outputStreamwrite(fos , "UTF-8");

Osw.write(char a );

Osw.flush();

1. Flush()清空缓冲区,将值传递到输出流

2. JAVA 1.7之后

 

 文件读写流:

RandomAccessfile rat = new RandomAccessfile("text", "rw")

1. Rw读写模式R只读模式

2. 可读写,有文件指针;

 

 

 

 

 

PrintStream写入流

1.能将功能添加到另一个输出流,即能够打印各种数据值方便的表示。不像其他的输出流,PrintStream从不抛出IOException;

例子:

PrintStreamout=System.out;

try{

out.write("abc".getBytes("UTF-8"));

}catch(IOExceptione){

e.printStackTrace();

}

 

 

 

内存流

1. 先声明一个Byte数组,用ByteArrayInputstrem封装成流

再用DataInputStrem装载读取

2. DataInputStrem可以按基本类型读取比特数流;

3. DataoutputStrem可以按基本类型输出比特流;

4. Dis.reset();    //指针归零,普通的流中多不能倒流

 

比特数组流

ByteArrayOutputStream

1. 这个类实现了一个输出流的数据写入一个字节数组。的自动随着数据写入缓冲区。检索的数据可以使用toByteArray()和toString()。

2. 常和ByteArrayOutputStream一起使用。

 

系统输入输出流

1. 不能新建

try{

System.setIn(newFileInputStream("test.txt"));

}catch(FileNotFoundExceptione){

e.printStackTrace();

}

try{

System.out.println(System.in.available());

}catch(IOExceptione){

e.printStackTrace();

}

2. Scanner ,阻塞进程,等待命令

System.in.read()永远读不到结尾,即-1

System.out 和system.err类似,err打出的是红字,一起用不能确定谁先输出

 

 

 

 

 

 

Radix:进制的意思

BigInterger(大型数据,不是基本类型,无法使用加减号)

BigIntegerbig=scanner.nextBigInteger();

System.out.println(big);

BigIntegeradd=big.add(newBigInteger("10"));

System.out.println(add); 

 

内存流和缓冲流区别:

内存流是基础流,速度快;目标和来源已知

缓存流是包装流,目标和读取源未知

 

装饰者模式:

灵活性高

解决java的单继承模式,模拟多继承

例子:

InputStreamReader可以装载FileInputStram等

BufferedReader可以装载InputStreamReader

 

 

0 0
原创粉丝点击