当前位置 > 主页 > 万和大讲堂 >


Java IO输入输出流的简单介绍 南京Java培训

2016-01-27 09:59

  一、流的简单概述

 

  1.流按操作数据分为:字节流、字符流:

 

  2.流按流向分为:输入流、输出流:

 

  字节流的抽象基类:

 

  InputStream、OutputStream;

 

  字符流的抽象基类:

 

  Reader、Writer   南京Java培训

 

  二、创建一个简单流步骤:

 

  1.创建流:

 

  FileWriter fw = new FileWriter("demo.txt");

 

  2.写入流(往流中写入数据);

 

  fw.write("abcd");

 

  3.关闭流

 

  fw.close();

 

  三、读取流创建步骤:

 

  1.创建读取流对象,并关联读取文件;

 

  FileReader fr = new FileReader("demo.txt");

 

  2.调用读取流对象的读取方法;

 

  int ch = 0;

 

  while((ch=fr.read())!=-1)

 

  {

 

  sop((char)ch);

 

  }

 

  3.关闭读取流对象;

 

  fr.close(); 南京Java软件培训

 

  四、字符流的缓冲区:

 

  1.对应缓冲区:

 

  BufferedWriter

 

  BufferedReader

 

  2.缓冲区的出现是为了提高流的操作效率;

 

  所以在创建缓冲区之前,必须要先有流对象;

 

  该缓冲区中提供了一个跨平台的换行符,newLine();

 

  newLine():方法返回的时候只返回回车符之前的数据内容,并不返回回车符。南京Java培训

 

  3.创建写入流步骤:

 

  1.创建写入流对象

 

  FileWriter fw = new FileWriter("buf.txt");

 

  2.将流对象传给缓冲区的构造函数;

 

  BufferedWriter bufw = new BufferedWriter(fw);

 

  3.写入数据; 南京Java软件培训

 

  for(int x=0;x<5;x++)

 

  {

 

  bufw.write("abcd"+x);

 

  bufw.newLine();

 

  //记住,只要用到缓冲区,就要记得刷新。

 

  bufw.flush();

 

  }

 

  4.关闭资源

 

  bufw.close();

 

  五、创建读取流缓冲区步骤:

 

  1.创建读取流对象,并和文件关联

 

  FileReader fr = new FileReader("buf.txt");

 

  2.将流对象传给缓冲区的构造函数;

 

  BufferedReader bufr = new BufferedReader(fr);

 

  3.读取数据:

 

  String line = null;

 

  //当返回null时,表示读到文件末尾

 

  while((line=bufr.readLine())!=null)

 

  {

 

  System.out.println(line);南京Java软件培训

 

  }

 

  4.关闭资源

 

  bufr.close();

 

  六、字节流

 

  》字节流:既可以文字数据,也可以媒体数据

 

  InputStream

 

  OutputStream

 

  二》outputStream调用writer();不用刷新,数据就直接写入目的地;

 

  因为字节是最小单位,不需要缓冲区,不需要任何操作,直接写入。南京Java培训

 

  三》字节流的读取方式有三种;

 

  1.单个字节读取方式;

 

  2.字节数组读取方式;(建议使用)

 

  3.字节流特有的读取方式(available)

 

  此方式慎重使用,如果读取的文件太大,超出了jvm范围,就会内存溢出

 

  七、字节流的缓冲区:南京Java软件培训

 

  BufferedOutputStream

 

  BufferedInputStream

 

  八、File概述:

 

  用来将文件或者文件夹封装成对象;

 

  1.创建File对象有三种方式:

 

  1.File f1 = new File("f:\\abc\\a.txt");

 

  2.File f2 = new File("f:\\abc","b.txt");

 

  3. File d = new File("f:\\abc");

 

  File f3 = new File(d,"c.txt");

 

  九、File类常见方法:

 

  1.创建:

 

  Boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不会创建, 返回false;和输出流不一样,输出流会覆盖以前文件。南京Java培训

 

  Boolean mkdir();创建文件夹;

 

  Boolean mkdirs():创建多级文件夹;

 

  2.删除

 

  Boolean delete();删除失败,返回false

 

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

 

  3.判断

 

  Boolean exists();文件是否存在

 

  Boolean isDirectory();判断是否是目录;

 

  Boolean isFile();判断是否是文件;

 

  Boolean isHidden();判断是否是隐藏文件;

 

  Boolean isAbsolute();是否是绝对路径

 

  4.获取信息

 

  String getName();获取名称

 

  String getpath(); 获取路径;南京Java培训机构

 

  String getParent();获取父目录,

 

  //该方法返回的是绝对路径中的父目录;如果获取的是相对路径,返回null

 

  //如果相对路径中有上一层目录,那么该目录就是返回结果;

 

  String getAbsolutePath();获取绝对路径

 

  Long lastModified();最后一次修改时间。

 

  Long length();获取文件长度

 

  十、Properties概述:

 

  Properties是hashtable的子类:

 

  也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串, 南京Java培训

 

  所以不需要泛型。南京Java培训机构

 

  Properties是集合中和IO技术相结合的集合容器:

 

  该对象的特点,可以用于键值对形式的配置文件。

 

  那么在加载数据时,需要数据有固定格式,键=值;

 

  十一、PrintWriter流:

 

  一》打印流:

 

  将流提供了打印方法,可以将各种数据类型的数据都原样打印;

 

  字节打印流:

 

  PrintStream:

 

  构造函数可以接受的参数类型:

 

  1.file对象,File

 

  2.字符串路径。String

 

  3.字节输出流,outputstream   南京Java培训

 

  字符打印流:

 

  PrintWriter:

 

  构造函数可以接受的参数类型:

 

  1.ile对象,File

 

  2.字符串路径。String

 

  3.字节输出流,outputstream

 

  4.字符输出流,Writer


最近开班 more>
  • Web前端开发
  • 软件测试
  • 软件测试预科班
  • AI大模型+全栈开发开班
  • 云原生精英班
  • 云网预科班
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第五期
  • Java全栈
  • CISP
  • HCIP-cloud
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCP 19C
  • RHCA
  • 6月9日
  • 5月21日
  • 5月14日
  • 6月9日
  • 5月7日
  • 5月26日
  • 5月19日
  • 5月12日
  • 6月3日
  • 6月9日
  • 随时开课
  • 7月12日
  • 5月19日
  • 5月19日
  • 5月7日
  • 5月10日
  • 5月24日
  • 5月24日
  • 随时开课
  • 随时开课
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入