黑马程序员----【javaSE基础】IO--字节流
来源:互联网 发布:c语言进程的创建 编辑:程序博客网 时间:2024/05/01 18:10
------- android培训、java培训、期待与您交流! ----------
一、
流有输入和输出,字节流是说输入和输出的都是字节形式,它们是用来处理非文本文件的,如图片,音频,视频等。最基础的两个字节流是:InputStream和OutputStream。
InputStream构造方法:
InputStream()
;InputStream的常用方法:
abstract int read(); int read(byte[] b);void close();
OutputStream的构造方法:
OutputStream();
OutputStream的常用方法:
abstract void write(int n); 这里的参数是int型,但是处理的都是字节,记住这里写的是数据n的低八位,也就是一个字节的数据。
void write(byte[] b); void flush();void close();
二、
InputStream的常用子类:FileInputStream,ObjectInputStream,BufferedInputStream。
1.FileInputStream是文件输入流。流是用来处理输入输出的数据,最基本的方式就是处理硬盘上的文件,FileInputStream就是文件输入流,把数据从文件输入到程序中。
其常用的构造方法有:
FileInputStream(File file)
;FileInputStream(String name)
;其常用的方法有:abstract int read();int read(byte[] b);void close();
构造方法有可用之处,但是其他方法和父类一样。
2.BufferedInputStream是缓冲输入流,顾名思义,提供缓冲,增加效率。虽然在父类中,我们用read(byte[] b)方法也可实现缓冲,提高效率,但是BufferedInputStream的使用更方便。另外需要注意的是,BufferedInputStream并不是InputStream的直接子类,它们之间有一个叫FilterInputStream的类,它本身并没有特殊的地方,只是重写父类的方法,但它的子类有许多可取之处。
其常用构造方法:
BufferedInputStream(InputStream in)
;其常用方法:abstract int read();int read(byte[] b);void close();
它的特殊的地方在于,它的构造方法,需要传入一个字节输入流,而且他本身实现了缓冲技术,所以尽管一些方法和父类一样,但效率会高。
3.ObjectInputStream是对象处理流,它可以直接读一个对象,包括基本对象和引用对象。
其常用构造方法:
ObjectInputStream(InputStream in)
;其常用方法:
readByte();readChar();等读取基本类型的方法。
String readUTF();这是这个类最精彩的地方,他有一个读取一个字符串的方法,这个方法是输入字节流中唯一的一个能够读取一个字符串的方法。
三、
OutputStream的常用子类:FileOutputStream,ObjectOutputStream,BufferedInputStream,PrintStream。
1.FileOutputStream是文件输出流。把数据从程序输出到文件中。
其常用构造方法:
FileOutputStream(File file);
FileOutputStream(String name)
;FileOutputStream(String name, boolean append)
前两个方法和输入流相似,第三个方法有另一个参数boolean append,其值如果为true,则在文件尾部续写,为false则覆盖文件。
其常用方法:abstract void write(int n); void write(byte[] b);void flush();void close();
常用方法和父类相似。
2.BufferedInputStream是输出缓冲流,可以提高效率。他的直接父类也不是OutputStream,中间有一个FilterOutputStream。
其常用构造方法:
BufferedOutputStream(OutputStream out)
其常用方法:void flush()等。
其构造方法需要传入一个字节输出流,其他方法和父类虽和父类相同,但提高了效率。
3.ObjectOutputStream,对象输出流,可以直接处理对象。
3.ObjectOutputStream,对象输出流,可以直接处理对象。
其构造方法:
ObjectOutputStream(OutputStream out)
其常用方法:
wirte(byte b);write(int n);等
writeUTF(String s)可以直接输出一个字符串,这也是他最精彩的地方。
4.PrintStream,是输出打印流,他的直接父类也不是OutputStream,中间有一个FilterOutputStream。
其构造方法:PrintStream(File file);
PrintStream(OutputStream out)
;PrintStream(String fileName)
;PrintStream(OutputStream out, boolean autoFlush)
这个方法表示,如果第二个参数为true,则自动刷新,不需要flush()。其常用方法:print(int i);print(char c);print(String s)
println();println(int i);println(char c);println(String s);
这个方法最精彩的地方就是可以方便的输出各种数据。
四、实现数据输入输出的代码,功能实现把一张图片读入程序,再输出到另一个地方,实现复制。
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class StreamDemo { public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("D:\\1.jpg"); fos = new FileOutputStream("D:\\2.jpg"); copy4(fis,fos); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { fis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void copy4(FileInputStream fis,FileOutputStream fos) throws IOException{ BufferedInputStream bis = new BufferedInputStream(fis); BufferedOutputStream bos = new BufferedOutputStream(fos); int ch = 0; while((ch=bis.read()) != -1){ bos.write(ch); } }}
System.in,接受键盘的输入,其类型是InputStream。
System.out,输出到控制台,其类型是PrintStream。
也就是说可以用上面讲过的方法处理System.in和System.out。
------- android培训、java培训、期待与您交流! ----------
- 黑马程序员----【javaSE基础】IO--字节流
- 黑马程序员----【javaSE基础】IO--字符流
- 黑马程序员----JAVASE之IO流操作【字节流】
- 黑马程序员-java基础 io字节流
- JAVASE基础-day20(IO(字节流))
- 黑马程序员---IO--字节流
- 黑马程序员 Java基础之IO流字节流
- 黑马程序员java基础之IO流中的字节流
- 黑马程序员——Java基础---IO流(字节流)
- 『黑马程序员』---java--IO--字节流基础
- 黑马程序员——java基础 io 字节流
- 黑马程序员——Java基础---IO---字节流
- 黑马程序员-javaSE学习之IO流
- 黑马程序员-JAVASE入门( IO流 )
- 黑马程序员 JavaSE-11 IO流
- 黑马程序员—javaSE—IO流
- 黑马程序员-javase-io(1)
- 黑马程序员-javase-io(2)
- MySQL索引的查看创建和删除
- POJ3260:The Fewest Coins(混合背包)
- Python学习(十三)------- GUI程序设计
- 【C++】fwrite与fread
- hrust OJ 1316 移动II
- 黑马程序员----【javaSE基础】IO--字节流
- hdu 4619(sap解二分匹配)
- hdu4300
- C#操作Informix数据库
- 又议android中的manifest清单文件
- 黑马程序员----【javaSE基础】IO--字符流
- UVA 350 Pseudo-Random Numbers
- C++虚函数与虚函数表(编译器查看)
- 黑马程序员—SQL系列 (一)