您的位置:首页 > 编程语言 > Java开发

Java开发中IO流介绍

2015-10-27 18:21 543 查看
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

IO流的分类

•根据处理数据类型的不同分为:字符流和字节流

•根据数据流向不同分为:输入流和输出流

  一、流的分类

1、按功能分

  读取流:InputStream Reader

  写出流:OutPutStream Writer

2、按流的类型分类

  字节流:InputStream OutputStream

  字符流:Reader Writer

  二、流功能分析

读取流是从输入设备或数据对象中读取数据到程序,用程序进行处理读入的数据,写出流是把程序处理的数据输出到输出设备上比如硬盘和控制台。

  字节流读取和写入的数据单位是字节,可以读取和写入任何类型的数据。达内西安Java培训讲师表示,字符流读取跟写入的数据单位是字符,只能读取和写入文本类型的数据。当需要读取或写入文本型的数据时要用字符流,因为它会比字节流读写字符更方便和高效,相反当数据不是文本型时只能用字节流来读取跟写入。

  三、流中读写方法的示例。(当用到IO流时就有可能出现IO异常,所以需要处理可能的异常)

  字节流:

FileOutputStream fos = new FileOutputStream("D://xxx.xxx");

fos.write("dsfdsf".getBytes());//写入字节数组

fos.close(); //用完后需要关闭流,释放资源。字节流不需要Flush

FileInputStream fis = new FileInputStream("D://xxx.xxx");

fis.read(); //读取一个字节

fis.close();

  字符流:

FileWriter fw = new FileWriter("D:\\xxx.txt");

fw.write("sdfsdfsdf");//可以直接写入字符串

fw.flush(); //写完后需要Flush,才能真正写道输出设备

fw.close(); //close()时也会Flush.

FileReader fr = new FileReader("D:\\xxx.txt");

fr.read(char[] ch);//可以读取一个字符数组的内容

fr.close();

  四、转换流

  当需要流之间的转换时会用到转换流。

1、把字节读取流转换成字符读取流

InputStreamReader isr = new InputStreamReader(newFileInputStream("xxx.xxx"));

2、把字符输出流转化成字节输出流

OutputStreamWriter osw = new OutputStreamWriter(newFileOutputStream("xx.xxx"));

  五、缓冲流

  需要提高流的读写效率时会用到缓冲流

1、字节缓冲流

BufferedInputStream bis = new BufferedInputStream(newFileInputStream("xx"));

BufferedOutputStream bos = new BufferedOutputStream(newFileOutputStream("xx"));

2、字符缓冲流

BufferedReader br = new BufferedReader(new FileReader("xx.txt"));

BufferedWriter bw = new BufferedWriter(new FileWriter("xx.txt"));

  缓冲流对读写功能进行了增强,而且使用缓冲技术提高了读写效率,所以当需要提高程序的读写效率时要使用缓冲流。

  六、File类的使用

1、创建

boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.

  和输出流不一样,输出流对象已建立创建文件。而且文件已经存在,会覆盖。

boolean mkdir()创建文件夹

boolean mkdirs()创建多级文件夹

2、删除。

boolean delete();删除失败时返回false.如果文件正在被使用,则删除不了返回false.

void deleteOnExit();在程序退出时删除指定文件。

3、判断

boolean exists();文件是否存在。

isFile():是不是文件

isDirectory();是不是文件夹

isHidden();是不是隐藏文件

isAbsolute();是不是绝对路径

4、获取信息

getName();文件名

getPath();文件路径

getParent();上一层路径

getAbsolutePath();绝对路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: