IT十八掌作业_java基础第十三天_IO

1.阐述BufferedReader和BufferedWriter的工作原理,

是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?

不一定,

bufferedreader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取;

bufferedwriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入;

缓冲区读写器的性能恒大于非缓冲区读写器的性能。

2.阐述HashSet与HashMap的异同。

Hashset:Hashset集合内部是通过HashMap进行实现的。使用的是HashMap中key部分。实现set接口,set继承collection接口

HashMap:实现Map接口,Map接口与Collection接口是同级的。

它们都具有不重复的特点,采用hash机制进行存储。

HashMap存储的是key - value , HashSet内部是通过HashMap进行的,只不过vlaue 部分传输的是一个垃圾值.

3.Charset类操作:isSupport()

3.1)通过该类验证平台是否支持一下字符集:

gb2312

GB2312

gbk

GBK

utf-8

utf8

iso8859-1

iso-8859-1

for (String charset: Charset.availableCharsets().keySet()){

System.out.println(charset);

}

3.2)取出平台默认的字符集

System.out.println(Charset.defaultCharset().name());

4.FileReader.getEncoding();

5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream

实现大文件复制,比较复制效率。

package com.it18zhang.iodemo;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

public class IoDemo {

public static void main(String[] args) {

String src = "D:/HPBladeSystemOnboardAdministrator用户指南.pdf";

String desc = "d:/copyAsset.pdf";

FileCopybyInputStrem(src,desc);

try {

FileCopyByBuffered(src,desc);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void FileCopybyInputStrem(String src,String desc) {

FileInputStream fis = null;

FileOutputStream fos = null;

try {

fis = new FileInputStream(src);

fos = new FileOutputStream(desc);

int len = 0;

while ((len = fis.read()) != -1){

fos.write(len);

fos.flush();

}

System.out.println("Over");

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

fis.close();

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

public static void FileCopyByBuffered(String src,String desc) throws Exception {

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(src));

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desc));

byte[] buf = new byte[1024 * 4];

int len = 0;

while((len = bis.read(buf)) != -1){

bos.write(buf, 0, len);

bos.flush();

}

bos.close();

bis.close();

System.out.println("Over");

}

}

6.阐述对象回收的前提条件。

对象回收是在没有任何指针指向该堆空间的时候回收,这个过程不是实时的。

时间: 2024-10-29 19:11:33

IT十八掌作业_java基础第十三天_IO的相关文章

IT十八掌作业_java基础第十三天_I

1.阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明? 2.阐述HashSet与HashMap的异同. 3.Charset类操作:isSupport() 3.1)通过该类验证平台是否支持一下字符集: gb2312 GB2312 gbk GBK utf-8 utf8 iso8859-1 iso-8859-1 3.2)取出平台默认的字符集 4.FileReader.getEncoding(); new S

IT十八掌作业_java基础第26天_Java基础总结/虚拟机基础

感谢大家对IT十八掌大数据的支持,今天的作业如下: 巩固java基础知识,安装虚拟机! --------------------------------------------------------------------------------------------------------答案略,自行练习

IT十八掌作业_java基础第八天_多线程

感觉大家对IT十八掌大数据的支持,今天的作业如下 1. 5辆汽车过山洞,依次经过山洞.每辆车通过山洞花费10秒,使用多线程实现. 2. 用多线程模拟蜜蜂和熊的关系. 蜜蜂是生产者,熊是消费者.蜜蜂生产蜂蜜是累加的过程,熊吃蜂蜜是批量(满100吃掉)的过程. 生产者和消费者之间使用通知方式告知对方.注意不能出现死锁的现象.

IT十八掌作业_java基础第25天_NIO

感谢大家对IT十八掌大数据的支持,今天的作业如下: 1.将NIO中的Socket通信过程使用图形进行描述和说明. 2.画图说明Runtime data area的内部结构. 3.阐述class的类加载过程. 4.反射和内省的异同,以及各自的优缺点. 5.阐述jvm中从堆和非堆的角度阐述jvm的内存结构.

IT十八掌作业_java基础第十七天_QQ案例

感谢大家对IT十八掌大数据的支持,今天的作业如下: 按照老师讲的,自己练习项目

IT十八掌作业_java基础第23天_数据库连接池\反射

感谢大家对IT十八掌大数据的支持,今天的作业如下: 1.属性赋值 ------------- 1.Man{50+ } Man man = new Man(); man.setXxx1(...); man.setXxx2(...); ... 50 Man copy = new Man(); copy = man ; copy.setXxx1(man.getXxx1()); copy.setXxx1(man.getXxx1()); copy.setXxx1(man.getXxx1()); copy.

IT十八掌作业_java基础第九天_多线程、自动拆装箱

1.蜜蜂和熊的生产消费关系,熊在蜂蜜满10斤吃掉.蜜蜂一次生产一斤蜂蜜,且蜜蜂生成一斤蜂蜜花费的时间是10s. 十只蜜蜂和两只熊. class Bee extends Thread{ private int bag; private static final int BAG_MAX = 20; private static final int ONCE = 5; private static final int TIME = 10 ; private Box box; private Strin

IT十八掌作业_java基础第六天_接口与适配器模式、多态、内部类

[作业1] ------------------------------------ 使用抽象类和接口实现适配器模式设计.涉及的类和接口分别为ButtonListener(接口), 其中含有click() / dbclick() / keyUp() / keyDown()等方法. ButtonAdapter(按钮适配器类),适配器中对非click()方法进行默认实现. Button类中添加addListener(ButtonListener l)方法. interface ButtonListe

IT十八掌作业_java基础第三天_数组

/* 1.定义一个函数,函数功能是动态提取int[]中元素的最大值. 2.定义一个函数,从数组中查询指定的元素首次出现的位置. 3.定义函数,完成冒泡排序,大数下沉. 4.折半查找. 5.阐述 6.定义一个函数,实现矩阵的转置.arr[i][j] == arr[j][i];//前提条件是正方的. 7.遍历三维组数,横向输出三维数组的每一个层. 8.定义一个类:Dog 有名称 color age cry(); 9.阐述出来堆区,栈区,何时出现溢出,如何解决. 10.oop ------------