(java基础)Java输入输出流及文件相关

字节流:

  所有的字节输入输出都继承自InputStream和OutputStream,通常用于读取二进制数据,最基本单位为单个字节,如图像和声音。默认不使用缓冲区。

(java基础)Java输入输出流及文件相关_第1张图片

(java基础)Java输入输出流及文件相关_第2张图片

FileInputStream和FileOutputStream:用于对磁盘文件涉及的数据流进行输入输出处理,即向一个文件对象中写入数据,可以用文件名作为直接参数。

构造FileOutputStream对象时,对应的文件必须存在并且可读的,而构造FileOutputStream对象时,如输出文件已存在,则必须是可覆盖的。

 

字符流:

  所有的字符输入输出都继承自Reader和Writer。java中的字符流处理的最基本的单元是Unicode码元(2字节),通常用于处理文本数据。默认使用缓冲区。

代码应用举例:

package Main;

import java.io.*;

public class Java_1 {
	public static void main(String[] args) {
		FileWriter f1 = null;
		try {
			f1 = new FileWriter("d:/test.txt");
			f1.write("test success!");
			//f1.flush(); 用于将缓存区内容输出
			f1.close();
		}catch(IOException e) {
			e.printStackTrace();
		}	
	}
}

注意:InputStream、OutputStream和Reader、Writer都属于抽象类,不能创建这种类型的对象。

 

有时需要把字符处理类和字节处理类结合起来,这就需要用到适配器类:   

InputStreamReader:将InputStream转换为Reader

OutputStreamWriter:将OutputStream转换为Writer

代码应用举例:

package Main;

import java.io.*;

public class Java_1{
    public static void main(String[] args) {
        try {
            FileInputStream f1 = new FileInputStream("d:/test1.txt");
            try {
                InputStreamReader f2 = new InputStreamReader(f1,"utf8");
                int i;
                while((i=f2.read())!=-1){
                    System.out.println((char)i);//可以输出test1.txt文件中的中文字符
                }    
            }catch(Exception e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}

File类:

    java.io包中File类是非流类

提供的方法有

mkdir():创建目录

mkdirs():创建父目录

Serializable接口:

作用:Serializable主要涉及一个串行化的概念,对象的寿命通常随着生成该对象的程序的终止而终止,有的时候可能需要将对象的状态保留下来,在需要的时候再将其恢复。我们把对象的这种能记录自己的状态以便于将来再生的能力叫做对象的持续性(Persistence)。对象通过写出描述自己状态的数值来记录自己,这个过程叫做对象的串行化。

注意:这个接口是没有方法和属性的,会为每个类生成一个序列号,生成依据是类名,类实现的接口名,public和protected方法。

 

例题:

题目:

  1.  
            ByteArrayOutputStream f1 = new ByteArrayOutputStream();
            try {
                ObjectOutputStream out = new ObjectOutputStream(f1);
                out.writeObject(this); //this在这里不做定义,不影响问题结果
                out.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

     

    阅读代码段,请问代码段的作用是什么:

    A. 将对象写入内存

    B. 将对象写入硬盘

    C. 将对象写入光盘

    D. 将对象写入文件

 

正确答案为A

 

  1. 下列java语句从指定网址读取html文件,在下划线处应填写的选项为_.

    Reader in = new __________(new URL(urlString).openStream());

    A. Reader

    B. DataOutputStream

    C. ByteArrayInputStream

    D. InputStreamReader

正确选项:D

 

  1. 当输入一个字节流时,要 ( )
    A.实现DataInput接口
    B.实现ObjectInput接口
    C.Serializable接口
    D.继承Reader抽象类

正确选项:A

转载于:https://www.cnblogs.com/yezhaodan/p/8763172.html

你可能感兴趣的:((java基础)Java输入输出流及文件相关)