{"id":21974134,"url":"https://github.com/javaobjects/demo520","last_synced_at":"2025-03-22T23:25:38.500Z","repository":{"id":105562325,"uuid":"196965143","full_name":"javaobjects/demo520","owner":"javaobjects","description":"文件与流","archived":false,"fork":false,"pushed_at":"2019-08-01T07:11:17.000Z","size":520,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-28T03:17:17.363Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javaobjects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-15T09:12:59.000Z","updated_at":"2019-08-01T07:11:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"890da874-02e4-4044-8bbc-b9edd44024cf","html_url":"https://github.com/javaobjects/demo520","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fdemo520","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fdemo520/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fdemo520/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javaobjects%2Fdemo520/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javaobjects","download_url":"https://codeload.github.com/javaobjects/demo520/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245033738,"owners_count":20550321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-29T15:38:50.960Z","updated_at":"2025-03-22T23:25:38.456Z","avatar_url":"https://github.com/javaobjects.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 135-Java-流的概念及API.md\n\n+ 流的概念\n    + 流（Stream )的概念代表的是程序中数据的流通\n    + 数据流是一串连续不断的数据的集合\n    + 在Java程序中，对于数据的输入/输出操作是以流(Stream)的方式进行的\n        + 输入流 — 流入程序的数据\n        + 输出流 — 流出程序的数据\n        + 在java程序中，从输入流读取数据（读到内存中），而从输出流输出数据（从内存存储到文件或显示到屏幕上）\n\n![](135-Images/1.png)\n\n+ 流的概念\n    + 流的分类\n        + 按流的方向不同\n            + 输入流、输出流\n        + 按处理数据的单位不同\n            + 字节流、字符流\n        + 按功能不同\n            + 节点流、处理流\n+ Java语言中，控制数据流的类都放在java.io包中\n\n|\t|字节流|\t字符流|\n| ----- | ------ | ---- |\n|输入流\t|InputStream|\tReader|\n|输出流\t|OutputStream\t|Writer|\n\n+ java.io包中有两大继承体系\n    + 以byte处理为主的Stream类，他们的命名方式是XXXStream\n    + 以字符处理为主的Reader / Writer类，他们的命名方式XXXReader或XXXWriter\n+ InputStream、OutputStream、Reader、Writer这四个类，是这两大继承体系的父类\n\n+ 流的层次结构图\n\n![](135-Images/2.png)\n\n+ 字节输入流的层次结构图\n\n![](135-Images/3.png)\n\n+ 字节输入流的主要方法\n    + 此抽象类是表示输入字节流的所有类的超类\n    + InputStream常用的方法 \n\n|方法\t|含义|\n| ------ | ------ |\n|int  read( )\t|一次读取一个byte的数据，并以int类型把数据返回来，如果没有数据可以读了，会返回”-1”|\n|int  read(byte[] buffer)\t|把所读取到的数据放在这个byte数组中，返回一个int型的数据，这个int型数据存储了返回的真正读取到的数据byte数|\n|int read(byte[] buffer,int offset,int length)\t|读取length个字节，并存储到一个字节数组buffer中，并从offset位置开始返回实际读取的字节数|\n|void close( )\t|关闭此输入流并释放与该流关联的所有系统资源|\n\n+ 字节输出流的层次结构图\n\n![](135-Images/4.png)\n\n+ 字节输出流的主要方法\n    + 此抽象类是表示输出字节流的所有类的超类 \n    + OutputStream常用的方法 \n\n| 方法\t|含义|\n| ----- | ----- |\n|void write(byte[] buffer)\t|将要输出的数组先放在一个byte数组中，然后用这个方法一次把一组数据输出出去 |\n|void write(byte[] buffer,int off,int len)\t|将指定字节数组中从偏移量 off 开始的 len 个字节写入此输出流|\n|abstract void write(int b)\t|将指定的字节写入此输出流|\n|void close( )\t|关闭此输出流并释放与此流有关的所有系统资源| \n|void flush( )\t|刷新此输出流并强制写出所有缓冲的输出字节 |\n\n+ 字符输入流的层次结构图\n\n![](135-Images/5.png)\n\n+ 字符输入流的主要方法\n    + 用于输入字符流的抽象类\n    + Reader常用的方法 \n\n|方法|\t含义|\n| ----- | ----- |\n|int  read( )\t|一次读取一个char的数据，并以int类型把数据返回来，如果没有数据可以读了，会返回”-1”|\n|int  read(char[] cbuffer)|\t把所读取到的数据放在这个char数组中，返回一个int型的数据，这个int型数据存储了返回的真正读取到的数据char数|\n|int read(char[] cbuffer,int offset,int length)|\t读取length个字符，并存储到一个字节数组cbuffer中，并从offset位置开始返回实际读取的字符数|\n|void close( )\t|关闭此Reader并释放与其关联的所有系统资源|\n\n+ 字符输出流的层次结构图\n\n![](135-Images/6.png)\n\n+ 字符输出流的主要方法\n    + 输出字符流的抽象类 \n    + Writer常用的方法\n\n|方法|\t含义|\n| ---- |  ---- |\n|void write(char[] cbuffer)\t|将要输出的数组先放在一个char数组中，然后用这个方法一次把一组数据输出出去|\n|void write(char[] cbuffer,int off,int len)|\t将指定字符数组中从偏移量 off 开始的 len 个字符写入此输出流|\n|int write(int b)|\t将指定的字符写入此输出流|\n|void write(String str)|\t写入字符串|\n|void write(String str, int off,int len)|\t将指定字符串中从偏移量 off 开始的 len 个字符写入此输出流|\n|void close( )\t|关闭此输出流并释放与此流有关的所有系统资源| \n|void flush( )\t|刷新此输出流并强制写出所有缓冲的输出字符|\n\n\n#### 拓展知识：\n\n[Java 8 新特性](https://www.runoob.com/java/java8-new-features.html)\n\n[java中 -\u003e](https://blog.csdn.net/qq_38078822/article/details/80836539)\n\n[Java8新特性5--流式API](https://www.jianshu.com/p/ae88f99f9cb9)\n\n[Java 流API - w3cschool](https://www.w3cschool.cn/java/java-stream-api.html)\n\n\n**以就就是我关于 *Java-流的概念及API*  知识点的整理与总结的全部内容**\n\n==================================================================\n#### 分割线\n==================================================================\n\n**博主为咯学编程：父母不同意学编程，现已断绝关系;恋人不同意学编程，现已分手;亲戚不同意学编程，现已断绝来往;老板不同意学编程,现已失业三十年。。。。。。如果此博文有帮到你欢迎打赏，金额不限。。。**\n\n![](135-Images/pay.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fdemo520","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavaobjects%2Fdemo520","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavaobjects%2Fdemo520/lists"}