(java基础)Java输入输出流及文件相关
字节流:
所有的字节输入输出都继承自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方法。
例题:
题目:
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
- 下列java语句从指定网址读取html文件,在下划线处应填写的选项为_.
Reader in = new __________(new URL(urlString).openStream());
A. Reader
B. DataOutputStream
C. ByteArrayInputStream
D. InputStreamReader
正确选项:D
- 当输入一个字节流时,要 ( )
A.实现DataInput接口
B.实现ObjectInput接口
C.Serializable接口
D.继承Reader抽象类
正确选项:A
(java基础)Java输入输出流及文件相关的更多相关文章
- java开发知识IO知识之输入输出流以及文件
目录 java开发知识IO知识之输入输出流以及文件 一丶流概述 二丶输入流讲解 InputStream类. 1. 输入流以及类层次结构 2.文件操作.使用输入流读取 三丶输出流 OutputStrea ...
- java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- Java工具类-输入输出流
输入输出流 1.概念 输入输出流:文件复制,上传 输出流: System.out.println() 写操作,程序将字符流写入到"目的地",比如打印机和文件等 输入流 :Scann ...
- 第27章 java I/O输入输出流
java I/O输入输出流 1.编码问题 import java.io.UnsupportedEncodingException; /** * java涉及的编码 */ public class En ...
- Java复习7.输入输出流
Java复习7.输入输出流 20131005 前言: Java中涉及数据的读写,都是基于流的,这一块的知识相当重要,而且在Java中的数据,char字符是16bit的,所以存在字节流和字符流的区别.如 ...
- Java基础-Java中23种设计模式之常用的设计模式
Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java基础-Java中的堆内存和离堆内存机制
Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Java基础-Java中的内存分配与回收机制
Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.
随机推荐
- celery学习之入门
Celery 简介 Celery 是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具.它是一个专注于实时处理的任务队列,同时也支持任务调度. broker:一个消息 ...
- 原生js怎样获取后台端口数据
全称: XMLHttpReques <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- UML系列图2
时序图: 用例图:
- paho.mqtt.c打印日志
mqtt中自身就带有日志系统Log.h和Log.c,这些日志文件是在客户端调用MQTTClient_create函数是初始化的,MQTTClient_create源码如下: int MQTTClien ...
- Java 容器 接口
Java 中容器框架的内容可以分为三层: 接口(模型), 模板和具体实现. 在开发中使用容器正常的流程是,首先根据需求确定使用何种容器模型,然后选择一个符合性能要求的容器实现类或者自己实现一个容器类. ...
- 初识mango DB
换工作了,第一次接触到mango数据库,有点云里雾里,整理一篇最基本的增删该查语句 百度百科说mango DB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据 ...
- Sticks Problem
Sticks Problem poj-2452 题目大意:给你一串n个数的数列a,上面的数为a1到an.我们求最大的y-x,其中,y和x满足1.x<y 2.任意的x<i<y,都有ai ...
- Oracle查看表空间大小和使用率
1. 全部表空间的大小select tablespace_name, sum(bytes)/1024/1024 from dba_data_files group by tablespace_name ...
- linux小白成长之路7————Docker安装mysql
[内容指引] 从Docker检索mysql镜像: Mysql Docker镜像下载: 查看本地镜像列表: 设置Mysql的Docker镜像开机自动运行: 常用Docker指令及参数: 1.从Docke ...
- 基于bootstrap的表格数据展示
一.导入bootstrap文件 二.前端html代码 对应的是前台条件查询和js数据获取 js数据获取部分在第四段 三.后台数据 total为集合总数 int类型 rows为前台需要展示的数据集合 ...