java基础第十三天IO接口

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

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

答:

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

BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、驻足和字符串的高效写入;缓冲区读写器的性能恒大于非缓冲区读写器的性能。

2.阐述HashSet与HashMap的异同。

答:

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

HashMap;实现Map接口,Map接口与collection接口是同级的。

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

3.Charset类操作:isSupport()

答:

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

gb2312

GB2312

gbk

GBK

utf-8

utf8

iso8859-1

iso-8859-1

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

import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;

public class CharsetApp {

	public static void main(String[] args) {
		/**
		 * 迭代所有字符集名称
		 */
		for(String key : Charset.availableCharsets().keySet()){
			System.out.println(key);
		}
		System.out.println(Charset.defaultCharset().name());

		Map<String,String> map = new HashMap<String,String>();
		map.put("key001", "tom");
		map.put("key001", "tomas");
		System.out.println(map.get("key001"));
	}
}

4.FileReader.getEncoding();

new String(,,,,,charset);

import java.nio.charset.Charset;

/**

*

*

*/

public class CharsetTest {

public static void main(String[] args) {

// 验证字符集

System.out.println("gb2312验证结果:" + Charset.isSupported("gb2312"));

System.out.println("GB2312验证结果:" + Charset.isSupported("GB2312"));

System.out.println("gbk验证结果:" + Charset.isSupported("gbk"));

System.out.println("GBK验证结果:" + Charset.isSupported("GBK"));

System.out.println("utf-8验证结果:" + Charset.isSupported("utf-8"));

System.out.println("utf8验证结果:" + Charset.isSupported("utf8"));

System.out.println("iso8859-1验证结果:" + Charset.isSupported("iso8859-1"));

System.out.println("iso-8859-1验证结果:" + Charset.isSupported("iso-8859-1"));

// 获取平台默认的字符集

Charset defaultCharset = Charset.defaultCharset();

System.out.println("系统默认的字符集:" + defaultCharset.displayName());

}

}

5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream

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

答:

package test_13day作业;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

//使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream
//实现大文件复制,比较复制效率。
public class teat {
	public static void main(String[] args) throws IOException {
		long startTimeMillis = System.currentTimeMillis();
		File fsou = new File("D:/w.bibis");
		FileInputStreamCopy(startTimeMillis, fsou);
		BufferedInputStreamCopy(startTimeMillis, fsou);
	}

	// 实现文件输入输出的时间
	private static void FileInputStreamCopy(long startTimeMillis, File fsou)
			throws IOException {

		try {
			if (!fsou.exists()) {
				fsou.createNewFile();
			}
			File fdec = new File("D:/w.bibis");
			FileInputStream fls = new FileInputStream(fsou);
			FileOutputStream fos = new FileOutputStream(fdec);

			int readLen = fls.read();
			while (readLen != -1) {
				fos.write(readLen);
				readLen = fls.read();
			}
			fos.flush();
			fls.close();
			fos.close();
			long endTimeMillis = System.currentTimeMillis();
			System.out.println("FileInputStream + FileOutputStream 花费时间:"
					+ (endTimeMillis - startTimeMillis));

		} catch (FileNotFoundException e) {

			e.printStackTrace();
		}

	}

	private static void BufferedInputStreamCopy(long startTimeMillis, File fsou) {

		try {
			if (!fsou.exists()) {
				fsou.createNewFile();
			}
			File fdec=new File("D:/jiji.txt");
			FileInputStream fis=new FileInputStream(fsou);
			FileOutputStream fos=new FileOutputStream(fdec);
			BufferedInputStream bis=new BufferedInputStream(fis);
			BufferedOutputStream bos=new BufferedOutputStream(fos);
			byte[] buf=new byte[1024];
			int readLen=0;
			while((readLen=bis.read(buf))!=-1){
				bos.write(buf, 0, readLen);
			}
			bos.close();
			bis.close();
			fos.close();
			fis.close();
			long endTimeMillis=System.currentTimeMillis();
			System.out.println(" BufferedInputStream + BufferedOuputStream花费时间"+(endTimeMillis - startTimeMillis));

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

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

答:

1)对象的失去引用

2)对象离开作用域

时间: 2024-11-03 22:18:34

java基础第十三天IO接口的相关文章

“全栈2019”Java第六十三章:接口与抽象方法详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第六十三章:接口与抽象方法详解 下一章 "全栈2019"Java第六十四章:接口与静态方法详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&qu

Java基础5:抽象类和接口

Java基础5:抽象类和接口 1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder. 2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现. 3 另外,一个类可以实现多个接口,但是不能继承多个类. 然而接口却可以继承多个其他接口.这一点很神奇. 下面看一下具体的例子,有一些小细节平时可能不会注意. cl

java基础2:抽象类、接口与多态

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Java 基础(四)| IO 流之使用文件流的正确姿势

为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既然是流动也就会有方向,有入方向和出方向.举个上传文件的栗子,现在有三个对象,文件.应用程序.上传的目标地址(服务器).简化的上传文件有两步: 应用程序读文件

Java 基础(三)| IO流之使用 File 类的正确姿势

为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 File 类? java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 二.File 类的使用 2.1 构造方法 File 类的构造有三种: public File(String pathname) : 直接通过文件路径字符串创建 public File(String par

Java基础(十一):接口

一.接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念.类描述对象的属性和方法.接口则包含类要实现的方法.除非实现接口的类是抽象类,否则该类要定义接口中的所有方法. 接口无法被实例化,但是可以被实现.一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类.另外,在 Java 中,接口

Java基础知识强化之IO流笔记65:序列化流 和 反序列化流

1. 什么是 序列化 和 反序列化 ?     序列化 (Serialization):将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象.一般的格式是与平台无关的二进制流,可以将这种二进制流持久保存在磁盘上,也可以通过网络将这种二进制流传输到另一个网络结点.  反序列化(Anti Serialization ):是指把这种二进制流数据还原成对象. 2. 序列化流 和 反序列化

Java基础第十三天总结

HashSet(是由HashMap实现的)和HashMap(存入KV对)存储机制一样,查询速度快. HashMap实现的map map 都没有线程安全性, HashSet实现的Set接口 Set实现的Collection HashMap实现的Map Collection与Map是同级别的. 文件复制 用到缓冲区 package com.test; import java.io.FileReader; import java.io.FileWriter; public class CopyFile

Java基础知识强化之IO流笔记56:IO流练习之 登录注册IO版

1.  登录注册IO版的Java项目框架,如下: 2. 具体代码实现: (1)User.java(cn.itcast.game): 1 package cn.itcast.pojo; 2 3 /** 4 * 这是用户基本描述类 5 * 6 * @author 风清扬 7 * @version V1.1 8 * 9 */ 10 public class User { 11 // 用户名 12 private String username; 13 // 密码 14 private String p