感觉慕课越来越敷衍了

感觉慕课越来越敷衍了

package com.east.index;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class demo{
	public static void main(String[] args) {
		try {
			FileInputStream Input = new FileInputStream("bd_logo1.png");
			FileOutputStream Output = new FileOutputStream("xg.png");
			
			FileInputStream Input_one = new FileInputStream("demo.txt");
			int n = 0;
			byte[] b = new byte[1050]; // 老师这里为啥是 1050  ?  
			while((n = Input.read(b)) !=-1) {  // 这里的 Input.read(b) 有是返回个啥 为啥循环,我只知知道返回-1为没图码了 
				Output.write(b,0,n); ///  这里我知道是输出; 那么 n又是个啥  这节课 完全就是老师自认为我们懂了,一条过,都不带解释都是啥。
			}
			

			Input.close();
			Output.close();
			
			
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}
	}
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕小尤 2019-11-21 19:26:10

同学你好,f应该是一个输入流对象,用该对象调用read(byte b)。从f输入流中读取最多b.length字节的数据。返回值是读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。

f. read(b)是将数据读入到字节数组b中。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕神6715844 #1
    哦,这就通了,内部应该就是回调了byte b数组,然后把得到的字节或图码给存到了B中write输出出去,n代表得到多少个字节||图码如果最后获取的码不足1050,则会是返回一个小于1050的数字,然后给了write的三参,会使图像文件不会大于原图,大于原图的原因是如果不写二三参,最后无论小于1050码多少都会按1050来算~我理解的对吗,老师~
    2019-11-21 22:10:00
  • 好帮手慕酷酷 回复 提问者 慕神6715844 #2
    同学你好,你的理解是正确的呐~祝学习愉快!
    2019-11-22 09:54:38
好帮手慕小尤 2019-11-21 11:04:18

同学你好,1. byte[] b = new byte[1050] 。理解为创建了一个byte 数组,这个数组的大小为1050,最多可以存 1050 个 字节。同学可以修改byte数组的大小。

2. read(byte[] b)方法,从此输入流中读取一个数据字节。则 read(byte[] b)方法返回值:读下一个数据字节,如果已到达文件末尾,则返回-1。因read(byte[] b)方法不能一次性读取完,所以需要循环读取。使用while循环,当n = Input.read(b)不等于-1,表示没有读到文件末尾,继续读取,直至n = Input.read(b)) == 1读到文件末尾停止。 

3.这里的n表示读取的字节长度,write方法解析:

http://img1.sycdn.imooc.com//climg/5dd5f91309aaff2112160538.jpg


4. f.read(b),是将byte[] b  数组中的数据一个字节,一个字节读取出来。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕神6715844 #1
    还是没懂b不是空的吗?虽然有1050个字节占位符但是和f不关联啊,f. read(b)后是给b字节还是b给f字节,好反人类
    2019-11-21 15:00:54
提问者 慕神6715844 2019-11-20 23:25:52
f.read() 返回每个字符的char码  那 f.read(b)是个啥,回调给B数据?  那B得到的是个啥


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师