美文网首页
15个问题及详解,让你理清java程序员不得面对的IO流

15个问题及详解,让你理清java程序员不得面对的IO流

作者: alcohol和cat | 来源:发表于2019-08-02 19:55 被阅读0次

java IO是面试java开发常问的问题

1.什么是IO流?

它是一个从源到目标的数据流。文件复制就是一个很好的例子。这涉及两个流——输入流和输出流。输入流从文件中读取数据并将数据存储在流程中(通常以临时变量的形式)。输出流从进程中读取并写入目标文件。

java流类图结构

2.有什么必要有两种类型的流-字节流和字符流?

字节流是在JDK1.0中引入的,并对包含ASCII字符的文件进行操作。我们知道Java支持其他语言字符,也称为Unicode字符。为了读取包含Unicode字符的文件,设计人员在JDK1.1中引入了字符流。由于ASCII是Unicode的一个子集,对于英文字符的文件,我们可以使用字节流或字符流。

Java流操作有关的类或接口

3.所有流中最顶级的类是什么?

所有的字节流类可以分为两类(输入流类和输出流类),所有的字符流类可以分为两类(读取类和写入类)。所有这些流都派生自四个抽象类。

所有字节流类中最顶级的类是java.io。

对于所有的输出流类,java.io.OutputStream。

类似地,对于所有的reader类都是java.io。

Reader和所有writer类都是java.io.Writer。

4.什么是FileInputStream和FileOutputStream?

这两个类是程序员经常使用的通用类,通常用于将文件复制到文件中。这些类可以很好地处理包含较少几千字节数据的文件,因为它们的性能非常差。对于较大的数据,最好使用BufferedInputStream (或 BufferedReader) 和 BufferedOutputStream (或 BufferedWriter)

public class InputAndOutputBuffering

{

public static void main(String args[]) throws IOException

{

FileInputStream fistream = new FileInputStream("pqr.txt"); BufferedInputStream bistream = new BufferedInputStream(fistream);

FileOutputStream fostream = new FileOutputStream("xyz.txt");

BufferedOutputStream bostream = new BufferedOutputStream(fostream);

int temp;

while( ( temp = bistream.read() ) != -1 )

{

bostream.write(temp);

System.out.print((char) temp);

}

bostream.close(); fostream.close();

bistream.close(); fistream.close();

}

}

5.您觉得使用哪个更好—字节流还是字符流?

个人来说,更喜欢使用字符流,因为他们更新一些。许多在字符流中存在的特性,字节流中不存在。比如使用BufferedReader而不是BufferedInputStreams或DataInputStream,使用newLine()方法来读取下一行,但是在字节流中我们需要做额外的操作。

6.System.out.println()是什么?

“println()”是PrintStream类的一个方法。“out”是在“System”类中定义的PrintStream类的静态对象。System是java中的一个类。lang包用于程序员与底层操作系统进行交互。

7.什么是Filter流(过滤流)?

Filter streams是IO流的一个类别,它的职责是为现有流添加额外的功能(优势),比如在目标文件中提供源文件中不存在的行号,或者提高复制性能等。

8.指定可用的过滤器流?

java中有四个过滤器流。io包-两个字节流和两个字符流。

它们是FilterInputStream、FilterOutputStream、FilterReader和FilterWriter。这些类是抽象类,您不能创建这些类的对象。

9.有哪些Filter流的子类

有四类-

1.LineNumberInputStream(额外的功能是它增加了目标文件中的行号),

-DataInputStream(包含如readInt这样的特殊方法(),

2.readDouble()和readLine()等,可以阅读int,双,一次一个字符串),

3.BufferedInputStream(使缓冲效果,增加性能峰值)

4.PushbackInputStream(推所需的字符回系统)。

10.SequenceInputStream的功能是什么?

在拷贝多个文件到一个目标文件的时候是非常有用的。可用使用很少的代码实现

案例:

public class TwoFiles {

public static void main(String args[]) throws IOException

{

FileInputStream fistream1 = new FileInputStream("/Users/aihe/Desktop/Songshu/code/java8source/src/main/resources/A.txt"); // first source file

FileInputStream fistream2 = new FileInputStream("/Users/aihe/Desktop/Songshu/code/java8source/src/main/resources/B.txt"); //second source file

SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);

FileOutputStream fostream = new FileOutputStream("C.txt"); // destination file

int temp;

while( ( temp = sistream.read() ) != -1)

{

System.out.print( (char) temp ); // to print at DOS prompt

fostream.write(temp); // to write to file

}

fostream.close();

sistream.close();

fistream1.close();

fistream2.close();

}

}

11PrintStream和PrintWriter的异同?

它们在功能上是相同的,但属于两个不同的类别——字节流和字符流。println()方法存在于这两个类中。

12.建议使用哪些流来实现文件复制的最大性能?

在字节流的时候,使用BufferedInputStream和BufferedOutputStream。

在字符流的时候,使用BufferedReader 和 BufferedWriter

13.什么是管道流?

有四种管道流——PipedInputStream、PipedOutputStream、PipedReader和PipedWriter。这些流对于在两个正在运行的线程(比如进程)之间传递数据非常有用。

14.什么是文件类?

它是一个非流类(不用于文件操作),用于了解文件的属性,比如创建(或修改)时的属性、具有读写权限、大小等。

15.RandomAccessFile是什么?

它在java.io包中是一个特殊的类,既不是输入流也不是输出流,它两者都可以做到。他是Object的直接子类。通常来说,一个流只有一个功能,要么读,要么写。但是RandomAccessFile既可以读文件,也可以写文件。DataInputStream 和 DataOutStream有的方法,在RandomAccessFile中都存在。

相关文章

  • 15个问题及详解,让你理清java程序员不得面对的IO流

    java IO是面试java开发常问的问题 1.什么是IO流? 它是一个从源到目标的数据流。文件复制就是一个很好的...

  • Java之IO流详解

    title: Java之IO流详解tags: Java IO流categories: Java IO流 大多数应用...

  • 2018-04-25

    java.io(Input/Output)使用详解 目录1、流(Stream)2、流的分类3、java.io包下的...

  • Java IO流详解(一)——预备知识

    Java IO流详解(一)——预备知识 一、字符与字节 在Java中有输入、输出两种IO流,每种输入、输出流又分为...

  • java IO流详解及特性

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流。 流是一组有顺序的,有起点和终点的字节集合,是...

  • Java IO流详解

    一、字节流 应用场景:视频、音频等文件时以字节的形式进行读写,字节是给计算机看的。FileInputStream和...

  • Java IO 流详解

    Java Io 类图结构 命名特点: 字节流:读写的都是字节。输入流:[xxx]InputStream输出流:[x...

  • java_io

    java.io.File类的使用IO原理及流的分类  |---文件流   操作对象是文件     FileInp...

  • Java类加载机制及类加载机制详解

    [转]Java类加载机制及类加载机制详解[https://lrh1993.gitbooks.io/android_...

  • Java基础-io知识回顾

    Java拾遗系列- io知识 简介 io分类及相关实例3.总结 1.简介 2.io分类及相关应用 2.1 io流...

网友评论

      本文标题:15个问题及详解,让你理清java程序员不得面对的IO流

      本文链接:https://www.haomeiwen.com/subject/ufurdctx.html