当前位置: 首页 > news >正文

浉河网站建设wordpress页眉置顶

浉河网站建设,wordpress页眉置顶,建站技术服务,许昌网站建设找汉狮目录 一、数据流概述 二、流的关闭 2.1 使用 close() 方法 2.2 使用 try-finally 2.3 使用 try-with-resources 三、字符流的读写 3.1 Reader 类 3.2 Writer 类 四、字节流的读写 4.1 InputStream 类 4.2 OutputStream 类 一、数据流概述 1#xff09;在 Java 中在 Java 中文件的操作分为两类操作文件系统 通过 File 类在系统中进行增、删、查等操作。 操作文件内容通过 数据流对象在文件中读取或写入内容。下文介绍该类 2什么是数据流数据流是一个抽象概念水流可以流动而数据也具有跟水流类似的特点同时两者也都可以被容器容纳。 3与文件的类型分类类似数据流也有两种分类字符流 文本文件是指保存合法字符的文件字符以字符串形式保存。以字符形式传输的流对象被称为字符流。 字节流二进制文件是指文件保存的是二进制数据。以字节形式传输的流对象被称为字节流。Java标准库中提供的用于读写文件的流对象有很多类但是这些类都可以归纳到上述两个大的种类中。 4流也分为输入流和输出流每一个种类的流对象都会有自己的输入流和输出流在Java中也使用不同的类来表示。字符流输入流类Reader输出流类Writer字节流输入流类InputStream输出流类OutputStream下文将介绍上述流对象的使用。 二、流的关闭 1流为什么需要关闭 这里的流是指文件的数据流每打开一个文件就会在内存中建立一个PCB。 PCB通过文件描述符表对这些打开的文件进行描述不使用文件了却不关闭文件则文件描述附表会一直被占用。 类似于内存泄漏上述的情况就造成了文件资源泄露。 文件描述符表有存储上限的一旦没有关闭的文件超过文件描述符表的上限就会抛出异常。 虽然 Java 有垃圾回收机制但该机制适用于内存资源的回收。而此处泄露的是文件资源。 因此只有在使用完毕后关闭流才能释放文件描述符表这样的文件资源才不会造成文件资源泄露。 2怎么关闭流对象 流对象主要通过以下三种方式进行关闭 1使用 close() 方法2使用 try-finally3使用 try-with-resources 2.1 使用 close() 方法 每个数据流的类通常都会有一个 close() 方法用于将这个流的对象关闭。使用方式直接用流对象调用 close() 方法即可。缺点直接用流对象调用 close() 方法固然可行但程序如果结构复杂极可能出现忘记调用或虽然代码中有调用 close()却因为代码结构问题或抛出异常问题而无法执行到这个方法。 2.2 使用 try-finally try-finally 语法的含义是执行 try 代码块中的代码无论这些代码是正常执行完毕还是抛出异常最终都必须执行 finally 代码块中的代码。 语法演示 try{//创建流对象//需要执行的代码 }finally{流对象.close(); } 2.3 使用 try-with-resources Java 还提供了一种更简洁明了的方式来帮助程序员更好的管理资源。 try-with-resources 是指将使用后需要关闭的资源在 try 关键字后使用 () 进行包裹这样在程序运行出 try 代码块后() 中包裹的资源将被自动释放。 语法演示 try( //创建流对象将需要在代码块运行完成后关闭的资源放在这里 ){//需要执行的代码 } 在下文的代码演示中将统一使用这种关闭文件资源的方式。 三、字符流的读写 字符流通过 Reader 类对数据进行读Reader 是一种输入流。字符流通过 Writer 类对数据进行写Writer 是一种输出流。Reader 类和 Writer 类都是抽象类创建实例时需要使用他们的子类。 3.1 Reader 类 Reader 使用 read() 方法读取数据read() 方法如果返回 -1 表示读取到文件末尾read() 方法有以下三种方法重载read() 无参数一次读取一个字符。read(char[] cbuf) 以数组为参数最多读取 cbuf.length 字符的数据到数组中返回实际读取的字符数量。read(char[] cbuf, int off, int len) 以数组为参数最多读取 cbuf.length 字符的数据到数组中会从数组的第 off 个元素开始将 len 长度的字符填入数组中返回实际读取的字符数量。 代码演示使用 read() 方法 //存在当前文件路径为C:/Test/A/test.txt内容为加油gogogopublic static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txttry(Reader reader new FileReader(C:/Test/A/test.txt)){while (true){//读取一个字符int ch reader.read();//判断是否到达文件末尾if (ch -1){break;}//打印读取到的字符System.out.println((char)ch);}}}//运行结果 加 油 g o g o g o 代码演示使用 read(char[] cbuf) 方法 //存在当前文件路径为C:/Test/A/test.txt内容为加油gogogopublic static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txttry(Reader reader new FileReader(C:/Test/A/test.txt)){while (true){//创建一个数组用来存储读取到的字符char[] cbuf new char[1024];//将读取到的字符存入cbuf数组中返回实际读取到的字符个数int len reader.read(cbuf);//判断是否到达文件末尾if (len -1){break;}//打印cbuf数组中的字符for (int i 0; i len; i){System.out.print(cbuf[i]);}}}}//运行结果 加油gogogo 3.2 Writer 类 Writer 使用 write() 方法写入数据write() 方法有以下五种方法重载write(int c) 每次写入一个字符。write(String str) 每次写入一个字符串write(char[] cbuf) 每次写入多个字符write(String str, int off, int len) 每次写入一个字符串从字符串中的off位置开始去写写len长度write(char[] cbuf, int off, int len) 每次写入多个字符从字符数组中的off位置开始去写写len长度 由于写入的数据可能保存在缓冲区未来得及写入文件中。因此为确保我们可以及时看到写入的内容Writer 类提供了 flush() 方法用于刷新缓冲区。 代码演示使用 write(int c) 方法 //存在当前文件路径为C:/Test/A/test.txt内容为加油gogogopublic static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txttry(Writer writer new FileWriter(C:/Test/A/test.txt)){//在文件中写入对应字符串writer.write(我的愿望是世界和平);//刷新缓冲区writer.flush();}}//运行结果打开文件 C:/Test/A/test.txt 发现原来的内容加油gogogo被替换为我的愿望是世界和平通过上述代码我们可以发现原先文件中的文本内容被覆盖了。 在上述代码中每次写入新的文本前都会将原有的文本先清空再写入。如果不想清空原有文本而是在原有文本之后继续写入则需要在打开文件时在  FileWriter 的构造方法的参数中填入另一个 boolean 类型的参数。当参数为 true 时则表示追加文本。 代码演示追加文本 //存在当前文件路径为C:/Test/A/test.txt内容为加油gogogopublic static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txt 参数中添加truetry(Writer writer new FileWriter(C:/Test/A/test.txt,true)){//在文件中写入对应字符串writer.write(我的愿望是世界和平);//刷新缓冲区writer.flush();}}//运行结果打开文件 C:/Test/A/test.txt 发现内容为加油gogogo我的愿望是世界和平 四、字节流的读写 字节流通过 InputStream 类对数据进行读InputStream 是一种输入流。字节流通过 OutputStream 类对数据进行写OutputStream 是一种输出流。InputStream 类和 OutputStream 类都是抽象类创建实例时需要使用他们的子类。 4.1 InputStream 类 InputStream 使用 read() 方法读取数据read() 方法如果返回 -1 表示读取到文件末尾read() 方法有以下三种方法重载read() 无参数一次读取一个字节。read(byte[] b) 以数组为参数最多读取 b.length 字节的数据到数组中返回实际读取的字节数量。read(byte[] cbuf, int off, int len) 以数组为参数最多读取 b.length 字节的数据到数组中会从数组的第 off 个元素开始将 len 长度的字节填入数组中返回实际读取的字节数量。 代码演示使用 read() 方法 //存在当前文件路径为C:/Test/A/test.txt内容为abc public static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txttry (InputStream is new FileInputStream(C:/Test/A/test.txt)){while (true){//读取一个字节int n is.read();//判断是否到达文件末尾if(n -1){break;}//打印System.out.printf(%c ,n);System.out.println(n);}}}//运行结果 a 97 b 98 c 99 代码演示使用 read(byte[] b) 方法 //存在当前文件路径为C:/Test/A/test.txt内容为abc public static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txttry (InputStream is new FileInputStream(C:/Test/A/test.txt)){while (true){//创建一个数组用来存储读取到的字节byte[] b new byte[1024];//将读取到的字节存入b数组中返回实际读取到的字节个数int len is.read(b);//判断是否到达文件末尾if(len -1){break;}//打印for(int i0;ilen;i){System.out.printf(%c ,b[i]);System.out.println(b[i]);}}}}//运行结果 a 97 b 98 c 99 根据使用的字符集的不同一个中文字符通常会占用两到三个字节。如果我们需要从文件中读取中文字符会非常麻烦。因此可以使用 Scanner 类来帮助我们从字节流结果中获取中文字符。 代码演示字节流获取中文字符的方法 //存在当前文件路径为C:/Test/A/test.txt内容为我的愿望是世界和平 public static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txt//将字节流通过 Scanner 类转换为字符流指定通过“utf8”字符集进行转换try (InputStream is new FileInputStream(C:/Test/A/test.txt);Scanner sc new Scanner(is,utf8)){//循环判断是否有下一行while (sc.hasNext()){//获得下一行String str sc.next();//打印System.out.println(str);}}}//运行结果 我的愿望是世界和平 4.2 OutputStream 类 OutputStream 使用 write() 方法写入数据write() 方法有以下三种方法重载write(int b) 每次写入一个字节。write(char[] cbuf) 每次写入多个字节write(char[] cbuf, int off, int len) 每次写入多个字符从字符数组中的off位置开始去写写len长度 由于写入的数据可能保存在缓冲区未来得及写入文件中。因此为确保我们可以及时看到写入的内容OutputStream 类提供了 flush() 方法用于刷新缓冲区。 由于字节流传输的是字节数据但我们仍需要以字符形式输入因此下文将以两种将字符转换为字节的方法分别进行演示。 代码演示使用 write(int b) 方法以 getBytes() 转换字符的方式 //存在当前文件路径为C:/Test/A/test.txtpublic static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txttry(OutputStream writer new FileOutputStream(C:/Test/A/test.txt)){//需要在文件中写入的字符串String str 我的愿望是世界和平;//将字符转换为字节并写入文件writer.write(str.getBytes());//刷新缓冲区writer.flush();}}//运行结果 打开文件 C:/Test/A/test.txt 文件内容为我的愿望是世界和平 代码演示使用 write(int b) 方法以 PrintWriter 包裹流对象的方式 //存在当前文件路径为C:/Test/A/test.txtpublic static void main(String[] args) throws IOException {//打开文件C:/Test/A/test.txttry(OutputStream writer new FileOutputStream(C:/Test/A/test.txt)){//使用PrintWriter类将输入的字符自动转换为字节PrintWriter printWriter new PrintWriter(writer);//写入文件printWriter.write(我的愿望是世界和平);//刷新缓冲区writer.flush();}}//运行结果 打开文件 C:/Test/A/test.txt 文件内容为我的愿望是世界和平 阅读指针 - 《网络编程》 链接生成中........
http://www.zqtcl.cn/news/500806/

相关文章:

  • 网站规划怎么写wordpress如何搭建博客
  • 网站索引页面网站做302重定向会怎么样
  • 精品成品冈站源码免费企业网站的内容模块
  • 网站策划的最终体现南宁网站建设培训学校
  • 网站不备案打不开怎么建网站不用买空间
  • 有没有IT做兼职的网站百度收录入口提交
  • 普洱市建设局网站重庆工程建设信息查询
  • 上海网站设计多少钱wap网站生成微信小程序
  • 广州网站到首页排名做图骂人的图片网站
  • 公司的网站建设价格wordpress付费阅读文章功能
  • 飞鸽网站建设建设网站什么软件比较好
  • 网站名称 规则网站seo完整seo优化方案
  • 昆明网站建设高端定制wordpress建站课程
  • 建网站外包wordpress 便利贴
  • 硅胶 技术支持 东莞网站建设网站互联网接入商
  • 太平洋建设21局网站微信网页版登录手机版
  • 站长统计芭乐鸭脖小猪电商平台哪个最好
  • 女与男爱做电影网站免费企业公司网站建设方案
  • 尚品本色木门网站是哪个公司做的大庆建设公司网站
  • 做网做网站建设的网站怎么用别人网站做模板
  • 电子商务网站购物车怎么做网站站点创建成功是什么意思
  • 如何做招聘网站的评估新浪微博可以做网站吗
  • 加强网站建设的制度wordpress如何清空
  • 轻松筹 的网站价格做网站建设意识形态
  • 有.net源码如何做网站湖南宣传片制作公司
  • dede网站模板怎么安装教程青岛需要做网站的公司
  • 静态双语企业网站后台源码北京网站关键词优化
  • 石家庄手机网站建设公司wordpress侧边栏显示子分类文字数
  • 公司网站客户案例个人做 网站2019
  • 个人网站怎么申请销售策划