字节流:

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

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

(java基础)Java输入输出流及文件相关的更多相关文章

  1. java开发知识IO知识之输入输出流以及文件

    目录 java开发知识IO知识之输入输出流以及文件 一丶流概述 二丶输入流讲解 InputStream类. 1. 输入流以及类层次结构 2.文件操作.使用输入流读取 三丶输出流 OutputStrea ...

  2. java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  3. Java工具类-输入输出流

    输入输出流 1.概念 输入输出流:文件复制,上传 输出流: System.out.println() 写操作,程序将字符流写入到"目的地",比如打印机和文件等 输入流 :Scann ...

  4. 第27章 java I/O输入输出流

    java I/O输入输出流 1.编码问题 import java.io.UnsupportedEncodingException; /** * java涉及的编码 */ public class En ...

  5. Java复习7.输入输出流

    Java复习7.输入输出流 20131005 前言: Java中涉及数据的读写,都是基于流的,这一块的知识相当重要,而且在Java中的数据,char字符是16bit的,所以存在字节流和字符流的区别.如 ...

  6. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  7. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  8. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. Java基础-Java中的内存分配与回收机制

    Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.

随机推荐

  1. WCF使用纯代码的方式进行服务寄宿

    服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境.通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以 ...

  2. 部署openstack的官网文档解读mysql的配置文件

    部署openstack的官网文档解读mysql的配置文件(使用与ubutu和centos7等系统) author:headsen chen  2017-10-12 16:57:11 个人原创,严禁转载 ...

  3. Hashtable源码解析(JDK1.8)

    package java.util; import java.io.*; import java.util.concurrent.ThreadLocalRandom; import java.util ...

  4. Java设计模式-责任链模式

    提出问题: 最初接触责任链模式就是在struts2中,在当时学的时候看了一眼,大概知道了原理,最近在复习,模拟struts2,说是模拟只是大体模拟了struts2的工作流程,很多东西都是写死的,只是为 ...

  5. 理解JAVA内存模型

    实际上java内存模型是如上图所示一样 每个线程有自己的栈内存,存放共享对象的副本,本地变量 每个线程自己的本地变量是不可见的,但是共享对象对每个线程都是可见的. 如果想实现线程通信的话, 线程对共享 ...

  6. python中Properties的一些小用法

    property最大的用处就是可以为一个属性制定getter,setter,delete和doc,他的函数原型为: def __init__(self, fget=None, fset=None, f ...

  7. CountDownLatch 使用说明

    CountDownLatch是一种java.util.concurrent包下一个同步工具类,它允许一个或多个线程等待直到在其他线程中一组操作执行完成. CountDownLatch的用法非常简单,下 ...

  8. 亚马逊AWS学习——VPC里面几个概念的关系

    VPC中涉及几个概念: VPC 子网 路由表 Internet网关 安全组 今天来讲讲这几个概念之间的关系. 1. VPC 说的就是VPC,当然VPC范围是最大的,VPC即virtual privat ...

  9. CNN中的padding

    在使用TF搭建CNN的过程中,卷积的操作如下 convolution = tf.nn.conv2d(X, filters, strides=[1,2,2,1], padding="SAME& ...

  10. 从源码角度看LinkedList一些基本操作(jdk1.7)

    介绍 LinkedList是一个双向链表,就像下图展示那样,每个节点有个指向上个元素和一个指向下个元素的指针. 接下来我会对我们经常使用的方法进行介绍,代码如下 @Test public void t ...