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

asp.net做网站吗/军事新闻俄乌最新消息

asp.net做网站吗,军事新闻俄乌最新消息,网站模板工具,wordpress英文Java中的I/O流及利用I/O流实现文件复制功能一、I/O流的概念1、 什么是I/O?硬件层面:I/O(input/output),即输入/输出。每个设备都会有一个专用的I/O地址,用来处理自己设备的输入输出信息。比如电脑设备输入端…

Java中的I/O流及利用I/O流实现文件复制功能
一、I/O流的概念

       1、 什么是I/O?

硬件层面:I/O(input/output),即输入/输出。每个设备都会有一个专用的I/O地址,用来处理自己设备的输入输出信息。比如电脑设备输入端口为键盘和鼠标,输出端口为显示屏。

软件层面:I/O即不同存储机制上的数据的读入写出。比如内存读写硬盘中的数据或者U盘中的数据。

2、什么是I/O流?

流是指一定的介质按照一定的方向流动的行为,在软件开发中指的是存储的数据的流动过程,这个数据源可以是硬盘中的文件、内存或者是网络中的某个URL

I/O流专门用于软件开发层面的理解,把数据从一个存储介质写出(output)或者读取(input)到另外一个存储介质的过程表示为I/O流的模型




二、流的分类

        1、根据传输数据的类型分类

字节流:读取和写入数据的时候,以字节为最小单元进行读取和写入操作

字符流:读取和写入数据的时候,以字符为最小单元进行读取和写入操作,因为每个字符根据编码不同,所占用的字节个数不同,每次读取和写入字符时候,是不定长的字节个数写入读取。

拓展:字符编码即计算机通过二进制表示不同国家字符的方式
常用编码类型:UTF-8、GBK、ISO8859-1等
处理中文的编码类型utf-8占3个字节、GBK占2个字节

                  关于Java中的编码可以参看我的这篇博客(Java中的编码问题)


         2、根据传输数据的方向分类
输入流:把数据从其他存储机制读入到当前内存机制当中
输出流:把内存当中的数据写出到其他存储机制当中


三、Java中的I/O流

        


1、梳理Java中I/O
        首先Java中分为两大类流:一类是字节流,另一类是字符流;
        每种大类的流都会对应输入流和输出流;即分别对应字节输入输出流和字符输入输出流;

2、字节输入/输出流



3、字符输入/输出流




4字节流和字符流相应的方法
字节输入流和字符输入流都有相应的read()方法,可以一个字节/一个字符的读取,也可以利用字节数组/字符数组进行批量读取
         相应的
字节输出流和字符输出流也有对应的write()方法,可以一个字节/一个字符的写出,也可以将整个字节数组/字符数组进行批量写出

 注意对应好,如果是以一个字节或者一个字符的读取,那么就要一个字节或者一个字符的写出

四、I/O流的应用:文件复制功能
         
1、使用字节流进行文件复制

源代码:
package com.huaixn.copy;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;public class ByteCopy {public static void main(String[] args) {ByteCopy bc= new ByteCopy();try {bc.copy1();bc.copy2();} catch (Exception e) {e.printStackTrace();}}//单字节的拷贝public void copy1() throws Exception{//首先构建输入流的对象,指定需要读取的文件路径FileInputStream fis = new FileInputStream("C:/Users/Administrator/Desktop/my.doc");//构建文件输出流的对象,即将文件复制在哪里去,后面的true代表每次写入时不清空当前文件内容FileOutputStream fos =new FileOutputStream("C:/Users/Administrator/Desktop/mycopy1.doc",true);//一个字节一个字节的读取文件的内容int value = fis.read();//把读取的一个字节写出while(value!=-1){fos.write(value);fos.flush();value = fis.read();}//读取完毕后关闭流fis.close();fos.close();}//利用字节数组拷贝public void copy2() throws Exception{//首先构建输入流的对象,指定需要读取的文件路径FileInputStream fis = new FileInputStream("C:/Users/Administrator/Desktop/my.doc");//构建文件输出流的对象,即将文件复制在哪里去,后面的true代表每次写入时不清空当前文件内容FileOutputStream fos =new FileOutputStream("C:/Users/Administrator/Desktop/mycopy2.doc",true);//构建字节数组byte [] bytes = new byte[1024];//把读取的字节存入到字节数组中int len=fis.read(bytes);//把读取的字节数组写出,注意一一对应while(len!=-1){/** 利用第一种写出,查看文件属性可知,复制后的文件大小和原来文件大小不一致* 原因是当最后一次读取没有1024字节时,也会写出1024个字节* 所以我们采用第二种写出方式*/
//			fos.write(bytes);fos.write(bytes, 0, len);fos.flush();len=fis.read(bytes);}//读取完毕后关闭流fis.close();fos.close();}
}

2、利用字符流进行文件拷贝
源代码:
package com.huaixn.copy;import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;public class CharCopy {public static void main(String[] args) {CharCopy cc = new CharCopy();try {cc.copy1();cc.copy2();} catch (Exception e) {e.printStackTrace();}}public void copy1() throws Exception{//构建字符输入流对象FileReader fr = new FileReader("C:\\Users\\Administrator\\Desktop\\my.txt");//构建字符输出流对象FileWriter fw =new FileWriter("C:\\Users\\Administrator\\Desktop\\mycopy1.txt");//读取单个字符int value=fr.read();//输出单个字符while(value!=-1){fw.write(value);fw.flush();value=fr.read();}fr.close();fw.close();}public void copy2() throws Exception{//构建字符输入流对象FileReader fr = new FileReader("C:\\Users\\Administrator\\Desktop\\my.txt");//构建字符输出流对象FileWriter fw =new FileWriter("C:\\Users\\Administrator\\Desktop\\mycopy2.txt");//构建字符数组char [] chars = new char[1024];//把读取的字符存入字符数组中int len =fr.read(chars);//把字符数组中的数据写出while(len!=-1){fw.write(chars, 0, len);fw.flush();len =fr.read(chars);}//关闭流操作fr.close();fw.close();}}

关于Java中的流,以前也写过一篇,有兴趣的可以点下面的链接查看:

                 博客:Java中的文件拷贝


在上面的文件复制功能代码中,使用字节流可以对.txt、.doc、.docx等文件类型进行拷贝
但使用字符流拷贝时,.doc以及.docx文件类型拷贝后出现了乱码,至于其中的原因,可能是因为中文编码的问题导致,小伙伴们可以在自己的PC机上尝试读取不同类型的文件;

总结:
1、我初次接触Java中的流时,感觉很复杂,有事输出流,字节流等;其实主要还是对流的分类不够了解;现在就感觉好很多了;
2、说点个人的体验吧,流的分类一定要搞清楚,然后要知道哪些是字节输入输出流,哪些是字符输入输出流;
3、勤加练习也是帮助记忆各种流的名字以及类别的方法,可能刚开始会搞不清楚,在理解好流的分类的基础上多敲几遍代码就能慢慢理解了;
4、共勉!

        
http://www.jmfq.cn/news/4754773.html

相关文章:

  • 昆明网站空间/免费b站软件推广网站2023
  • 国外极简网站/网站免费搭建平台
  • 产品毕业设计代做网站/google搜索排名优化
  • 个人做网站排版/营销策划方案模板范文
  • 专门做反季的网站/郑州网站建设推广
  • 网站banner尺寸大小/全球搜索引擎排名
  • 学习软件的网站/免费推客推广平台
  • 广州建设工程质量安全网站/如何制作网址链接
  • 为什么要建设学校网站/怎么把自己的网站发布到网上
  • 固定ip做网站怎么备案/站长统计工具
  • 武汉建设银行行号查询网站/开鲁视频
  • WordPress 评论列表折叠/开封搜索引擎优化
  • 建设地方美食网站的目的/网站关键词优化外包
  • linux系统做网站/宣传网页制作
  • 佛山高端网站开发公司/2021年网络热点舆论
  • 那些做环保网站的好处/搜狗站长工具
  • 做百度推广一定要有自已网站/前端优化网站
  • 网站做任务包括什么/南平网站seo
  • 网站开发工作招聘/网站的搜索引擎
  • 陕西省建设厅特种工报名网站/海外推广运营
  • 求合伙人做网站/谷歌浏览器下载官网
  • 寿光专业做网站/牛奶软文广告营销
  • godaddy 搭建网站/宁波seo自然优化技术
  • 腾讯广告代理商/东莞优化疫情防控措施
  • 做网站的图片从哪里找/门户网站怎么做
  • 关于做门户网站专栏内容通知/手游推广代理平台有哪些
  • 有哪些做平面设计好的网站/搜索引擎营销有哪些
  • 山东网站建设企业/91关键词
  • 高端网站开发培训/适合小学生的新闻事件
  • 广州公司网站制作/企业营销策划公司