关于IO从白痴到略懂的一些理解

       关于JAVA的IO,之前是一点都不能理解,老师们很清楚地用生活中的例子来描述,我却似懂非懂,放到代码中却更难以理解。刚开始接触C的时候,只知道输入和输出,在大二刚开学做的C++项目----T恤自动售货机,老师说要现实储存数据 和提取数据的功能,当时我还单纯的以为是把数据保存在数组上,然后可以打印出来。

       数据的存储,不单是指保存在数组上,也可以是以文件的形式保存在硬盘中。简单地说,储存在数组里的变量是保存在内存上的,断电后就会丢失,而后者则是永久地储存在硬盘中的。

       数据的提取,可以是打印储存在数组里的变量,也可以是打印出硬盘里的文件内容。

       IO,input,output,输入输出。流这一概念,像水管一样,可以流入流出,他建立在内存中,所以不放把它当作内存来看。输入流,也就是往内存中输入信息,输出流,就是把内存中的数据信息提取出来。而打印,只是显示流中的信息。

       光说可能不容易理解,举个实例(复制粘贴):

	public void copyPaste(String srcName,String destName){
		try{
		//创建文件输入流对象 形参代表的是将要输入到流中的数据文件,以路径的形式表示最好,分别创建一个输入流和输出流对象,在内存中占据一个空间 
			FileInputStream in = new FileInputStream(srcName);           //就像定义一个数组一样,只不过没有长度限制
			//创建文件输出流对象    形参代表的是输出流输出的目的文件也是最好以路径的形式表示                        
			FileOutputStream out = new FileOutputStream(destName);
			//获取字节总数
			int length = in.available();
			//把字节总数分为几段
			int m = length/(10*1024*1024);
			//取余
			int n = length%(10*1024*1024);
			//创建一个字节数组
			byte datas [] = new byte[10*1024*1024];
			//一段一段复制
			for(int o = 0;o<m;o++){
				//读入                             //在这对流写入 数据(上面输入的路径的文件)
				in.read(datas);
				//写出                             //在这把流中的数据输出保存到目的文件中
				out.write(datas);                 //也可以打印在屏幕上,但这并不会实现永久的保存,断电后数据就会消失
			}
			//创建一个字节数组    用来读入和写出剩余的字节
			byte datas_2 [] = new byte[n];
			in.read(datas_2);
			out.write(datas_2);
			System.out.println("文件复制粘贴完成!!!");
			//关闭流                                   //举例说流可以类比成一个数组,肯定也是占据了内存的,所以不用了请关闭
			out.close();
			in.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

       上面的代码和算法可能会看不懂,主要想用写了备注的代码来举例今天我说得内容,想要形象地解释流这一概念。内容可能很白痴,我当初出现了这样的问题,也有人会有这样的疑问,在此记录的同时,希望对大家有所帮助!

      

   

                                                                                                                                                                                                                                   Techck




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值