字节流:

  所有的字节输入输出都继承自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. vc的环境变量配置和缺少mspdb60.dll的解决方法

    vc的编译器是cl.exe,我们如果在vc中编译就不用配置环境,但是如果要在任何位置用命令提示符打开编译器cl.exe来编译程序,那么就要配置环境了. 下面我就讲讲vc的环境变量配置和缺少mspdb6 ...

  2. oracle 10g数据库下的 XDB组件的重新安装

    emmmm,这是一个不做死就不会的过程!!! 今天在导出数据库时,遇到了报错信息,其实开发说这个报错没关系了,但作死如楼主,一定要把这个错给解决了,然后就有了下面的作死过程. 错误关键字是:packa ...

  3. oracle空间索引

    1.索引创建 添加元数据 INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) VALUES ('BE ...

  4. python中的str.strip()的用法

    python中字符串str的strip()方法 str.strip()就是把字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉. 例1:str=" ABC"prin ...

  5. HyperLedger Fabric 1.1 手动部署单机单节点

    手动部署单机单节点 之前发布过官方的e2e部署方案,由于环境或是访问权限等各种问题,还是有相当一部分码友无法成功跑起来,故此,本章将来一次纯手动操作的集群部署. 主要需要的步骤如下: 1:环境整理 2 ...

  6. 数据模型LP32 ILP32 LP64 LLP64 ILP64

    各个C++实现所选择采用的基础类型的大小统称为"数据模型".有四种广泛采用的数据模型: 32 位系统: LP32 或 2/4/4(int 为 16-bit,long 和指针为 32 ...

  7. 笔记:Jersey REST API 设计

    REST 统一接口 REST 使用 HTTP 协议的通用方法作为统一接口的标准词汇,REST 服务所提供的方法信息都在 HTTP 方法里,每一种HTTP请求方法都可以从安全性和幂等性两方面考虑,这对正 ...

  8. Android proguard (混淆)

    混淆(Proguard)用法 最近项目中遇到一些混淆相关的问题,由于之前对proguard了解不多,所以每次都是面向Stackoverflow的编程.copy别人的答案内心还可以接受,但是copy了之 ...

  9. 总结linux路由技术

    Linux系统的route命令用于显示和操作IP路由表,要实现两个不同的网段之间的通信,需要一台连接两个网络的路由器,或者同时连接位于两个网络的网关来实现. 在Linux系统中,设置路由通常是为了解决 ...

  10. 关于换了手机后,导致原来连的fiddler抓不到新手机上的包的解决方法

    原来我们测试都是一台安卓机,一台ios机,由于机子不够,所以安卓机都是自己的手机,可以连内网,也可以连外网 但是最近这几天,不知道公司抽了什么风.把网都给限制了,只有公司的测试机,才能连内网测,结果我 ...