A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yuhaohong 初级黑马   /  2018-1-3 11:40  /  1055 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

IO流的基本分类
  • InputStream & OutPutStream(字节流)
  • Reader & Writer(字符流)

    • 其实字符流 = 字节流 + 编码表,字符流是自己了的扩展
    • 最底层还是字节(二进制数据进行操作)


IO流的基本方法(就2个)
  • read()
  • writer()

    • IO流是硬盘到内存的桥梁,数据在桥梁之间传输,所以最基本的就是读和写
    • 向Buffered类的read和write只是对2个基本方法的一个封装增强

  • read 和 write 方法扩展(其他IO子类或者增强流)

    • write(int by)--->write(byte[] arr)--->write(byte[] arr, int fromIndex, int length)--->write(String str)---->..
    • read()--->read(byte[] arr)--->readLine()--->等等等


文件拷贝(oldFile ---> newFile)
  • FileInputStream和FileOutputStream结合使用:读一点,写一点 或者 读一段,写一段

    • 一个字节一个字节的读,或者一个数组一个数组的读

  • 如果是文件的剪切:拷贝完后调用oldFile.delete()方法把旧文件删掉

Buffered增强流
  • BufferedReader:即使你调用read读取一个字节,它都会一次性读取8K,然后给你一点一点返回
  • BufferedWriter:不管你write多少字节,都先写到数组里,等数组满了,再一次性写到文件里

    • 所以BufferedWriter如果不flush或者close的话,数据会丢失


自己实现Scanner
[Java] 纯文本查看 复制代码
public static void main(String[] args) throws IOException {
  //模拟Scanner键盘输入
  //1. System.in 为基本输入流,获取键盘打击时获取的字节,是一个字节流
  Scanner sc = new Scanner(System.in);
  //2.通过Scanner对象获取输入的字符串 (字节流--->字符流)
  String line = sc.nextLine();
  System.out.println(line);
  //====================
  System.out.println("自己实现Scanner");
  InputStream in = System.in;
  BufferedReader br = null;
  try {
    br = new BufferedReader(new InputStreamReader(in, "utf-8"));
    String myLine = br.readLine();
    System.out.println(myLine);
  } catch (Exception e) {
    e.printStackTrace();
  }finally {
    br.close();
  }

}注意事项
  • IO流不要不要直接对C盘根目录进行操作(权限不够),对C盘文件夹里的文件进行读写才ok
  • 路径分隔符都用正斜杠(/)尽量不要用反斜杠(\)


1 个回复

倒序浏览
沙发
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马