3758人加入学习
(12人评价)
Java编程学习第三季

制作完成于2018年5月10日 使用JDK 8

价格 免费

在OutputStreamWriter中,也是有缓冲区:同理,在catch前面定义一个刷新缓冲区,以免在关闭的时候出现异常无法显示数据:

write.flush();

[展开全文]

因为内部的流被包装流所管理,所以关闭流的时候关闭包装流即可。

[展开全文]

06:35

为了让代码的方法通用性更强,我们把源文件和目标文件两个文件作为参数传递给copyByByte方法,再单独创建一个test测试方法。

 

个人总结:

1、当我们需要读取字节数据,也就是执行输入操作的时候,需要定义一个a=-1,然后接着一个while循环去判断:

int a=-1;

while(true){

a=input.read();

if(a==-1)break;

System.put.print((char)a);

}

2、当我们需要通过数组实现文件读取的时候,也就是执行输入操作的时候,需要定义data字节数组,并且定义int length=-1;接着通过遍历的方法执行循环:

方法一:

byte[] data=new byte[4];

int length=-1;

while(length=input.read(data))>-1){

for(int i=0;i<length;i++){

System.out.print((char)data[i]);

}

方法二:

byte[] data=new byte[1024];

int length=-1;

while(length=input.read(data)!=-1)

{length=input.read(data));

String str= new String(data,0,length);

System.out.print(str);}

3、当我们需要通过数组实现完成文件的复制的时候,

byte[] data=new byte[1024];

int length=-1;

while(length=input.read(data)!=-1)

{output.write(data,0,length);}

 

[展开全文]

缓冲区输入流中缓冲区没有刷新这一说,因为我们只需要读取,而不是写入。

缓冲区输入流中缓冲区承担的作用:读取字节的时候,每读一个字节,都要跟硬盘交互一次,浪费性能。

[展开全文]

因为字节数组比较大,为1024,我们去读一次就读取完了,所以不采用遍历方法;但是也可以使用遍历的方法把文本的内容读取(如任务41:当中的字节数组为4,jiao'xiao):

 

[展开全文]

1:4表示缓冲区的大小

2:因为缓冲区大小为4,所以当存到第二个a的时候,会自动刷新缓冲区,缓冲区把自身数据写入到硬盘上。所以,s和z没有写到硬盘上,因为缓冲区没满。

 

以防close出现异常,导致缓冲区的数据写不到硬盘上,在执行close前先执行output.flush();

 

把字符串转换成字节类型(getBytes())并通过字节数组写入到缓冲区。

[展开全文]

缓冲区:把写入的内容暂时存放在缓冲区内,待填满缓冲区或写入内容完毕时,,系统会一次性把缓冲区内容跟硬盘之间进行数据交互。

 

output.flush();//刷新缓冲区,把缓冲区内容写到硬盘上,达成数据输出。

 

 

缓冲区里面的数据什么时候会写到硬盘上呢?
1、缓冲区满了

2、调用flush//流并没有关闭,仍可以实现单个字节的shu'chu

3、调用close

[展开全文]

不可以直接给BufferedOutPutStream传递一个路径对象,需要new一个FileOutputStream对象,再把路径对象放在FileOutputStream里面。

--所以,缓冲区输出流也叫包装流:对其他流进行包装。(给原有的流加了个包装流,俗称缓冲区输出流)

关闭的时候关闭包装流就可以了:

 

[展开全文]

使用字节数组完成文件的复制:

统计字节完成文件的复制时间以及字节数组完成文件的复制时间:

[展开全文]

一边读入一边写出,从而进行使用文件输入输出流复制文件。

 

 

[展开全文]

假如添加一个true属性,会把write写入内容变成追加;假如不添加true,系统会默认为false,则会把原来内容替换掉。

getBytes()可以把字符串转换成字节:

------

输入流:把中文读取出来需要我们去处理字节问题,而我们不知道字节是多少,所以通过输入流无法显示中文;

输出流:把中文输出到指定位置,也就是把中文这个字节写进去,系统会帮我们处理中文的字节问题。

读取索引为1至2之间的所有字符:el

[展开全文]

因为要对流的关闭操作,所以无论是输入流还是输出流,我们都要把这个流定义在try catch外面:

FileOutPutStream output=null;

对流的关闭操作也需要try catch。

当我们进行输出流操作时,输出对象不存在,系统会自动变我们生成。

[展开全文]

因为每四个字节四个字节去读取,当读完data【3】的时候,最后剩下一个!还没读取,这个时候感叹号就会取代data【3】里面的m,o01接着感叹号一同输出。

所以,我们借助遍历方法进行优化:如1

2:把data这个字节数组传递过来,让str一个一个读取字节数组里面的字节并且拼接成字符串输出;0代表开始区间,读取length个字节。

--length:代表读取到的字节数量

箭头处:1、先进行读取数据,把读取数据存放在data中作为输入流被read,接着把读取到的个数赋值给length,最后跟-1作比较,大于-1才会执行下面循环。

同理:

[展开全文]

当读取到文本内容最后一个字符的时候,也就是文本末尾(a=-1),循环会break.

 

因为demo1.txt的字节文件每个字符都是使用字节来存储,所以我们可以每读到一个字节,我们就将他转换成字符类型输出出来。

[展开全文]

这里如果不把a强制转换成char类型,结果会输出输入流文件的第一个字符对应的ASCII值。

 

输入流的关闭一般放在finally{}里面:

finally{input.close();}

但是要是放在try里面,有可能因为代码出现异常直接跳到catch部分,无法执行到输入流的关闭。

假如在finally里面想要访问input,则需要在try上面定义一个:FileInputStream input=null;

在进行输入流关闭的时候,需要对input进行判断(假如input是null,无需关闭输入流);因为输入流关闭也会出现异常(需要catch异常),所以需要给close定义一个异常处理:

 

 

[展开全文]

1:因为这个file也是根据文件路径创建的

2:这里的String name就是一个文件路径(绝对路径或者相对路径也可以)

[展开全文]

输入流:把文件从硬盘读取到内存里面-》读取-》读入-》输入-》Input-》输入流

输出流:从内存里面把数据保存到硬盘-》存储-》写入-》输出-》Output-》输出流

字符流:只可以读取文本数据

--抽象基类:Reader Writer

字节流:可以读取任意类型的数据

--抽象基类:InputStream OutputStream

字节流用来操作二进制数据,字符流用来操作文本数据。所有数据都是由字节来存储的,所以文本数据也可以用字节流来操作(少数)。

[展开全文]

复制用copy:

source:要复制的文件路径;

target:把文件复制到的路径下

剪贴用renameTo

[展开全文]

1:把想要遍历的目录传递过来;

2:对目录file进行递归操作

[展开全文]

授课教师

SiKi学院老师

课程特色

下载资料(1)
视频(65)