1、IO是什么意思? data source是什么意思?

    IO:输入输出

    data source:数据源

  2、字节流和字符流有什么区别?输入流和输出流有什么区别?

    分类

  3、节点流和处理流有什么区别?

    按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
    节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
    处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
    JAVA常用的节点流有以下几个:
    文 件 FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流。
    字符串 StringReader StringWriter 对字符串进行处理的节点流。
    数 组 ByteArrayInputStream ByteArrayOutputStreamCharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
    管 道 PipedInputStream PipedOutputStream PipedReaderPipedWriter对管道进行处理的节点流。
    父 类 InputStream OutputStream Reader Writer

    常用处理流(关闭处理流使用关闭里面的节点流)
    缓冲流:BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter
增加缓冲功能,避免频繁读写硬盘。
    转换流:InputStreamReader OutputStreamReader实现字节流和字符流之间的转换。
    数据流 DataInputStream DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来。

  4、word文档能使用字符流操作吗?为什么?

    不能,纯文本才可以用字符流

  5、【上机】完成老师课堂上读入文件数据的代码:

static void testReader(){

File f = new File("d:/a.txt");

FileInputStream fis = null;

try {

fis = new FileInputStream(f);

int m = 0;

while((m=fis.read())!=-1){

char c = (char) m;

System.out.print(c);

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(fis!=null){

fis.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

  6、解释下面代码的含义:

while((m=fis.read())!=-1){

char c = (char) m;

System.out.print(c);

}

    没有读完就一直读

  7、流对象使用完后,一般要调用close方法关闭,释放资源。 这种做法对吗?

  虽然在字节流当中,操作没有用到缓冲区,所以使用完流之后不写close方法也可以,但是为了规范,最好也要写上。字符流当中,必须使用close方法,否则内容无法输入输出。

  8、【上机】完成老师写文件的操作:

static void testWrite(){

FileOutputStream fos = null;

String str = "sffsdfsdfsdfsdfsdfsdfsdf";

try {

fos = new FileOutputStream("d:/b.txt");

/*for(int i=0;i<str.length();i++){

fos.write(str.charAt(i));

}*/

fos.write(str.getBytes());

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(fos!=null){

fos.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

  9、InputStream和OutputStream基本特点是?

    参见“这里

  10、Reader和Writer的基本特点是?

    参考“Reader和Writer

  11、FileInputStream和OutputStream的基本作用是?

    操作文件的字节流就是 FileInputStream & FileOutputStream

  12、FileReader和FileWriter的作用是?

    操作文件的字符流就是 FileInputStream & FileOutputStream

    FileInputStream(字节流)与fileReader(字符流) 的区别

   13、【上机】完成文件的copy代码

    边读变写即可

  14、BufferInputStream和BufferedOutputStream的特点是?

    参考:BufferedInputStream与BufferedOutputStream用法简介

  15、【上机】使用BufferedReader和BufferedWriter实现文本文件的拷贝。

public static void testReader() throws Exception{

      // 创建读取对象reader

      Reader reader = new FileReader(new File("c:/a.txt""));

      // 创建缓冲流包装reader

      BufferedReader br = new BufferedReader(reader);

      // 创建写入对象writer

      Writer writer = new FileWriter(new File("e:/a.txt"));

      // 创建缓冲流包装writer

      BufferedWriter bw = new BufferedWriter(writer);

      String str = null;

      // 用循环边读边写

      while((str = br.readLine())!=null){

             bw.writer(str);

             bw.newLine();

      }

      bw.flush();

      bw.close();

      br.close();

}

  16、PrintStream打印流经常用于什么情况? System.out 是不是打印流?

    参考:这里

  

  17、【上机】实现字节数组和任何基本类型和引用类型执行的相互转换

提示:使用ByteArrayInutStream和ByteArrayOutputStream。

(1) 字节数组和基本数据类型之间的转换

boolean flag = true;

ByteArrayOutputStream baos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(baos);

dos.writeBoolean(flag);

byte[] b = baos.toByteArray();

byte[] b = new byte[1024];

ByteArrayInputStream bais = new ByteArrayInputStream(b);

DataInputStream dis = new DataInputStream(bais);

boolean flag = dis.readBoolean();

(2) 字节数组和引用类型之间的转换

User user = new User();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(baos);

oos.writeObject(user);

byte[] b = baos.toByteArray();

byte[] b = new byte[1024];

ByteArrayInputStream bais = new ByteArrayInputStream(b);

ObjectInputStream ois = new ObjectInputStream(bais);

User user = (User)ois.readObject();

  18、DataInputStream和DataOutputStream的特点是?

  DataInputStream 是数据输入流。它继承于FilterInputStream。
  DataInputStream 是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”。应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据。

  19、【上机】使用ObjectInputstream和ObjectOutputStream实现将某个对象存储
        到硬盘上,然后再读到程序中。

    

  20、中文乱码是怎么造成的?

    编码方式与解码方式额设之不当

  21、unicode字符集是几个字节表示一个字符?为什么需要utf-8?

    2个字节表示一个字符,

    utf-8是Unicode最重要的实现方式之一。另外还有utf-16、utf-32等。UTF-8不是固定字长编码的,而是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。这是种比较巧妙的设计,如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。

  22、序列化和反序列化指的是什么?

    参考这里

  23、想序列化某个类的对象,该类必须实现Serializable接口吗?

  必须

  24、说说Serializable接口的特点。

    类通过实现 java.io.Serializable 接口以启用其序列化功能。
  未实现此接口的类将无法使其任何状态序列化或反序列化。
  可序列化类的所有子类型本身都是可序列化的。因为实现接口也是间接的等同于继承。
  序列化接口没有方法或字段,仅用于标识可序列化的语义

  25、transient的作用是?

    Java中transient关键字的作用,简单地说,就是让某些被修饰的成员属性变量不被序列化

     参考这里

  26、【上机】完成目录的copy代码(结合递归算法)

  27、【上机】假设从入学开始所有书写的Java代码都在d:/sxtjava文件夹下,包括多

级子文件夹。使用IO流获取从入学开始,到目前为止已经写了多少行Java代码。

提示:获取d:/sxtjava文件夹及其子文件夹下的所有.java文件,使用readLine()读取其中每一行,每读取一行,行数加1。

  28、【上机】下载并自学apache commons中的IO工具包。

百战程序员9- IO流的更多相关文章

  1. 黑马程序员_<<IO流基本操作(Writer,Reader)>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1.概述 硬盘之间的文件的传输,硬盘中文件的 ...

  2. 百战程序员-xml

    1.用自己的语言说出,为什么需要XML? XML 是一种元标注语言,该语言提供一种描述结构数据的格式.这有助于更精确地声明内容,方便跨越多种平台的更有意义的搜索结果.此外,XML 将起用新一代的基于 ...

  3. 百战程序员——Spring框架

    什么是容器,我们学过了哪些容器,Spring与我们之前学习的容器有哪些异同点? 容器可以管理对象的生命周期.对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称.如 ...

  4. 百战程序员——JSP

    JSP全称是什么?它相比servlet有什么优势?有什么劣势? JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计. JSP技术使用Jav ...

  5. 百战程序员——JDBC

    JDBC全称是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  6. 百战程序员——EL、JSTL

    1.EL表达式可以操作作用域中的属性,也可以操作普通的局部变量.对吗? 不对 El表达式一般支持作用域(application.session.request.pagecontext)中的属性.EL变 ...

  7. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  8. 黑马程序员_Java基础:IO流总结

    ------- android培训.java培训.期待与您交流! ---------- IO流在是java中非常重要,也是应用非常频繁的一种技术.初学者要是能把IO技术的学透,java基础也就能更加牢 ...

  9. 黑马程序员——JAVA基础之IO流FileReader,FileWriter

    ------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流  IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...

随机推荐

  1. Bugku-CTF之看看源代码吧

    Day13 看看源代码吧 http://123.206.87.240:8002/web4/   本题要点:url解码   首先看到文本框,我们还是要习惯性输入一下

  2. 调用微信的扫一扫功能详解说明---(java 排坑版)

    最近碰到了这么一个需求,说是在前端页面调用手机本地的相机,扫描二维码这么一个需求,对于我一个后端来说, 这实在是难,难于上青天,但是决不能说一个不字.我说可以使用微信的扫码工具吗,这样可以方便一点,. ...

  3. P1908 逆序对

    传送门 这题似乎不应该出现在这里.. 日常做法(归并): #include<iostream> #include<cstdio> #include<algorithm&g ...

  4. 腾讯云CentOS7.4服务器添加swap分区

    自己的腾讯云服务器搭建的zabbix监控中,提示Lack of free swap space 腾讯的官方说明在这: https://cloud.tencent.com/document/produc ...

  5. win平台下Path变量消失问题

    解决方法:2019.01.10文章转载自 李北北:https://www.jianshu.com/p/b89f0c99867e 问题描述:修改了path变量,但是环境变量中path消失,于是想再次打开 ...

  6. Asp.net core 学习笔记 (library)

    refer : https://docs.microsoft.com/en-us/dotnet/core/tutorials/library-with-visual-studio https://do ...

  7. Java原生API访问MongoDB

    1.pom.xml <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java ...

  8. 20175317 《Java程序设计》第二周学习总结

    20175317 <Java程序设计>第二周学习总结 教材学习内容总结 第二周我学习了教材三四章的内容,了解了Java与C语言的相似与不同之处. 其中第二章学到了标识符与关键字.基本数据类 ...

  9. WinForm之中BindingNavigator控件的使用

    WinForm之中BindingNavigator控件的使用在微软WinForm中,BindingNavigator控件主要用来绑定数据.可以将一个数据集合与该控件绑定,以进行数据 联动的显示效果.如 ...

  10. javascript里文字选中/选中文字

    一.获取/清除选中的文字 //获取选中的文字 document.getElementById("get").onclick = function () { var txt = wi ...