java基础第十三天IO接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)对象离开作用域


以上是关于java基础第十三天IO接口的主要内容,如果未能解决你的问题,请参考以下文章

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

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

java学习--基础知识进阶第十三天--笔记

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

Java基础第十三天总结——面向对象(中)

学习Java的第十三天