IO编程总结

1.什么是输入输出?如何使用输入输出?

答:1).是指程序与外部设备或其它计算机进行交互的操作。

2)把数据读到内存中,称为输入,即input,进行数据的read操作。

3).从内存往外部设备写数据,称为输出,即output,进行数据的write操作。

4).几乎所有的程序都具有输入与输出操作:

*如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等。

*通过输入和输出操作可以从外界接收信息,或者是把信息传递给外界。

5).Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计更为简单。

6).入还是出是相对于内存来说的。

2.什么是File类?如何使用File类?

:1).File类是java.io包中很重要的一个类;

2).File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录;

3).File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等;

4).File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作。

3.File类的构造方法有几种重载方式?如何使用File类的构造方法的重载方式?

答:有四种

例:

方法原型

说明

File(String pathname)

指定文件(或目录)名和路径创建文件对象

1).//在当前目录下创建一个与aaa.txt文件名相关联的文件对象;

  File f1 = new File(“aaa.txt”);

2).//指明详细的路径以及文件名,请注意双斜线或用反斜杠;

  File f2 = new File(“D:\\Java\\Hello.java”);
3).//指明详细的路径以及目录名,请注意双斜线;

  File f3 = new File(“D:\\Java”);

4.File类有哪些常用的方法?

方法原型

说明

boolean exists()

判断文件是否存在,存在返回true,否则返回false

Boolean isFile()

判断是否为文件,是文件返回true,否则返回false

Boolean isDictionary()

判断是否为目录,是目录返回true,否则返回false

String getName()

获得文件的名称

String getAbsolutePath()

获得文件的绝对路径

Long length()

获得文件的长度(字节数)

Boolean creatNewFile()

throws IOException

创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉

Boolean delete()

删除文件,删除成功返回ture,否则返回false

5.如何使用文件名过滤器?可以使用哪些方法进行文件名过滤?

答:1).文件名过滤器接口:interface FilenameFilter

  *常用于过滤不符合文件规格的文件名

 2).需重写accept方法自定义过滤规则,如下:

  boolean accept(File dir,String name)

  *dir:表示文件的当前目录。

  *name:表示当前目录的子目录或者文件的名字。

 3).File类中提供了使用文件名过滤器遍历目录的方法:

  *String[] list(FilenameFilter filter)

   //把满足指定过滤条件的文件和目录,返回到String数组中。

  *File[] listFiles(FilenameFilter filter)

   //把满足指定过滤条件的文件和目录,返回到File数组中。

 6.如何使用文件过滤器?可以使用哪些方法进行文件过滤?

  

答:1).文件过滤器接口:interface FileFilter

   *常用于检测文件是否存在

   2).需重写accept方法自定义过滤规则,如下:

    boolean accept(File pathName)

    *pathName:表示当前目录的子目录或者文件的名字。

   3).File类中提供了使用文件过滤器遍历目录的方法:

    File[] listFiles(FilenameFilter filter)

    *把满足指定过滤条件的文件和目录,返回到File数组中。

 

7.什么是输入流?什么是输出流?

答:流按着数据的传输方向分为:

1).输入流:往内存中读叫输入流。

*所有输入流都是InputStream类或者Reader类的子类。

*类名以InputStream结尾的类都是InputStream的子类。

*类名以Reader结尾的类都是Reader类的子类。

2).输出流:从内存中往外写叫输出流。

*所有输出流都是OutputStream类或者Writer类的子类。

*类名以OutputStream结尾的类都是OutputStream的子类。

*类名以Writer结尾的类都是Writer类的子类。

8.如何区分字节流与字符流?

答:字节流与字符流是从数据流的编码格式上划分的。

9.什么是字节流?字节流中有哪些常用类?

答:1).InputStreamOutputStream的子类都是字节流;

*可以读写二进制文件,主要处理音频、图片、字节流,处理单元为1个字节。

2).字节输入流  FileInputStream

  字节输出流  FileOutputStream

10.什么是字符流?字符流中有哪些常用类?

:1).ReaderWriter的子类都是字符流;

*主要处理字符或字符串,字符流处理单元为2个字节。

*字节流将读取到的字节数据,去指定的编码表中获取对应文字。

2).字符输入流 FileReader

  字符输出流 FileWriter

11.如何区分节点流与处理流?

答:节点流与处理流是依据封装类型划分的。

12.什么是节点流?节点流中有哪些常用类?

答:1).如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,则称为节点流。

2).*字节输入流  FileInputStream

  *字节输入流  FileOutputStream

  *字符输入流  FileReader

  *字符输出流  FileWriter

 13.什么是处理流?为什么要使用处理流?处理流中有哪些常用类?

 1).如果流封装的是其他流对象,称为处理流。

 2).处理流提供了缓冲功能,提高读写效率。

 3).*缓冲字节输出流  BufferedOutputStream

   *缓冲字节输入流  BufferedInputStream

   *缓冲字符输入流  BufferedReader

   *缓冲字符输出流  BufferedWriter

  14.处理流具有哪些特点?

   答:1).字符缓冲输入流提供了读取一行的方法readLine()

   2).字符缓冲输入流提供了写入一个空行的方法newLine()

   3).字符缓冲输出流,吧写入的数据先写入到内存,再使用flush()方法将内存数据刷到硬盘上。

   *注意:在使用字符缓冲输出流时,一定先flush(),然后再close(),避免数据的丢失。

15.为什么要使用转换流(字节流与字符流的转换)?

答:1).字符流与字节流之间的桥梁。

2).方便了字符流与字节流之间的操作。

16.如何使用转换流(字节流与字符流的转换)?

答:字节流中的数据都是字符时,转成字符流操作更高效。

17.如何通过桥梁进行字节流转换成字符流?

答:1). InputStreamReader

   InputStreamReader(InputStream in)

   InputStreamReader(InputStream in,String charsetName)

 2).OutputStreamWriter

   OutputStreamWriter(OutputStream out)

   OutputStreamWriter(OutputStream out, String charsetName)

 注意:它读入字节,并根据指定的编码方式,将之转换为字符流。使用的编码方式可能由名称指定,或平台可接受的缺省编码方式。

18.如何使用图片的方式解释字节流转换为字符流?

答:

 

 

 

 

19.什么是Scanner类?如何使用Scanner类?举例说明

答:1).Scanner类位于Java.util包中,不在java.io包中,不属于IO流,Scanner是一个工具类,主要目标是简化文本的扫描,最常使用此类获取控制台输入。

2).Scanner获取控制台输入的步骤:

*使用控制台输入创建Scanner对象

 Scanner scanner = new Scanner(System.in);

**调用Scanner中的nextXXX方法,获得需要的数据类型

  例如:nextnextLinenextIntnextByte

20.什么是IO流?分别继承哪几种抽象流类型?用图示说明

:*JavaSE所提供的所有流位于java.io内,分别继承下列四种抽象流类型:

1) 字节输入流:

 

  *灰色:处理流         无色:节点流

 

 

2).字节输出流:

 

*灰色:处理流         无色:节点流

3).字符输入流:

 

*灰色:处理流         无色:节点流

 

 

 

 

 

4). 字符输出流:

 

*灰色:处理流         无色:节点流

21.在进行流操作时,需要遵守那些基本规律?

答:1).明确源和目的:

源:输入流。InputStream Reader

目的:输出流。OutputStream Writer

2).操作的数据是否是纯文本:

是:字符流。

不是:字节流。

3).明确具体设备来进行区分:

源设备:内存,硬盘,键盘。

目的设备:内存,硬盘,控制台。

4).是否有其它额外功能:

是否高效:是(加缓冲区)

          否(不加缓冲区)

22.如何进行流操作?需要注意哪些事项?

答:*需求:复制一个文本文件

1).明确源和目的:

  源:输入流。InputStream Reader

  目的:输出流。OutputStream Writer

2).操作的数据是否是纯文本:

是。

源:Reader

目的:Writer

3).明确具体设备来进行区分:

  源设备:硬盘  File

  目的设备:硬盘 File

4).是否有其它额外功能:

  是否高效:是(加缓冲区)

 

 

 

 

转载于:https://www.cnblogs.com/Chenglei789/p/7647449.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值