(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中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二.
随机推荐
- 解析Visual C# 7.2中的private protected访问修饰符
去年12月份,随着Visual Studio 2017 Update 15.5的发布,Visual C#迎来了它的最新版本:7.2. 在这个版本中,有个让人难以理解的新特性,就是private pro ...
- fastjson从1.1.41升级到1.2.28的坑
最近因为fastjson安全漏洞,升级jar包时,踩了一些坑. 新版本FastJsonHttpMessageConverter初始化,默认设置MediaType为*/* 背景: 使用Spring Re ...
- Spring源码学习:第1步--在Spring源码中添加最简单的Demo代码
为了最大程度地贴近Spring源码并进行学习,一种比较直接的做法是:直接在Spring源码中加入Demo代码,并进行调试. 参照以前使用Spring的经验,Spring最简单的使用方法是:一个实体类. ...
- MySQL的奇怪的删表数据文件而表照样能打开
MySQL的奇怪的删表数据文件而表照样能打开 author:headsen chen 2017-11-02 17:57:17 现象:删除一个正在运行的mysql数据库的表的数据文件:* ...
- linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh
linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh 是因为权限不够,执行以下命令就可以: chmod +x startup.sh ...
- 【RMAN】Oracle中如何备份控制文件?备份控制文件的方式有哪几种?
真题1. 如何备份控制文件?备份控制文件的方式有哪几种? 答案:备份控制文件的方式有多种. ① 备份控制文件可以在线进行: SQL> ALTER DATABASE BACKUP CONTROLF ...
- jQuery 3.0最终版发布,十大新特性眼前一亮
jQuery 3.0在日前发布了最终的全新版本.从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终板 ...
- Netty实现客户端和服务端通信简单例子
Netty是建立在NIO基础之上,Netty在NIO之上又提供了更高层次的抽象. 在Netty里面,Accept连接可以使用单独的线程池去处理,读写操作又是另外的线程池来处理. Accept连接和读写 ...
- rocketMq概念介绍
rocketMq官网 http://rocketmq.apache.org/ rocketMq逻辑概念介绍 rocketMq逻辑图 备注: 改图片分享自李占卫的网上家园 说明: 在rocketM ...
- 排序算法Java实现(快速排序)
算法描述:对于一组给定的记录,通过一趟排序后,将原序列分为两部分,其中前一部分的所有记录均比后一部分的所有记录小,然后再依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均有序为止. ...