java中的输入输出<1>
java中的输入输出基础(1)
java中的IO支持通过java.io包下的类和接口来支持。在java.io包下主要包括输入、输出两种io流,每种输入、输出流又分为字节流和字符流。
字节流就是以字节为单位来进行处理输入、输出,字符流就是以字符为单位来进行处理输入、输出的。
java中的io流还分为底层的节点流和上层的处理流。
java中的4个抽象基类,注意是抽象类:字节流(InputStream,OutputStream),字符流(Reader,Writer)。
1、输入流:InputStream/Reader
InputStream、Reader是所有输入流的基类,他们都是抽象类,所以他们不能创建实例来进行输入。他们有一个用于读取文件的输入流:FileInputStream,FileReader
//FileInputStream 实例
FileInputStream fis=new FileInputStream("D:\\wang.ini"); //创建字节输入流
byte[] b=new byte[1024]; //创建一个长度为1024的字节数组
int length=fis.read(b); //调用InputStream的read(byte[] b):每次读取b.length字节,返回实际读取的字节数
if(length>0){
System.out.println(new String(b,0,length)); //如果有数据,将字节数组转换成字符串输出
}
//FileReader实例
FileReader file=new FileReader("D:\\wang.ini");
char[] c=new char[32]; //字符数组
int length=file.read(c);
if(length>0){
System.out.println(new String(c,0,length));
}
2、OutPutStream/Writer
输出流 FileOutputStream FileWriter
FileInputStream fis=null;
FileOutputStream fos=null;
try{
fis=new FileInputStream("D:\\wang.ini");
fos=new FileOutputStream("D:\\wang.java");
byte[] b=new byte[32];
int length=fis.read(b);
if(length>0){
fos.write(b, 0, length); //每次以b.length大小输出,从0开始 输出大小为length
}
}
catch(Exception e){
System.out.println(e.toString());
}
finally{
fis.close();
fos.close();
}
3、通过上面4个抽象基类的用法我们发现,四个基类使用起来有些麻烦,这就需要借助于处理流。处理流,他可以隐藏底层设备上的节点差异,并对外提供方便的输入、输出方法
//使用PrintStream流来包装OutputStream
PrintStream ps=null;
try{
FileOutputStream fos=new FileOutputStream("D://wang.java");
ps=new PrintStream(fos); //创建一个PrintStream流来包装FileOutputStream流
ps.println("你是谁");
ps.println(new Test());
}catch(Exception e){
System.out.println(e.toString());
}
finally{
if(ps!=null){
ps.close();
}
}
4、一般如果我们进行输入/输出二进制内容,应该考虑使用字节流。如果是文本内容,应该考虑使用字符流。
5、转换流:InputStreamReader将字节输入流转换成字符输入流、OutputStreamWriter将字节输出流转换成字符输出流。但是没有字符输入流转换成字节输入流和字符输出流转换成字节输出流。文本内容是二进制文件特殊形式。使用字符流更方便。
//System.in是一个字节输入流,是InputStream流的一个实例,我们可以使用InputStreamReader转换成字符输入流,再将Reader包装成BufferedReader,利用BufferedReader的readline进行一行一行的读入数据。
InputStreamReader reader=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(reader);
while(br.readLine()!=null){
if(br.readLine().equals("exit")){
System.exit(1);
}
System.out.println("输出内容为:"+br.readLine());
}
java中的输入输出<1>的更多相关文章
- java中的输入输出方法
输入 import java.util.Scanner; public class EnterTest { public static void main(String[] args) { //主方法 ...
- java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;
<java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...
- java中IO流小解
下面这张图列出了java中一些处理流: java中根据操作对象的不同可以分为:字节流和字符流. 首先我们先表示一下什么叫节点流和处理流: 节点流:可以从或向一个特定的地方(节点)读写数据.如FileR ...
- (转)java中的进程与线程
(转自地址http://www.ibm.com/developerworks/cn/java/j-lo-processthread/) Java 进程的建立方法 在 JDK 中,与进程有直接关系的类为 ...
- java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET
java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET 亲,“社区之星”已经一周岁了! 社区福利快来领取免费参加MDCC大会机会哦 Tag功能介绍—我们 ...
- Java中的GOF23(23中设计模式)--------- 工厂模式(Factory)
Java中的GOF23(23中设计模式)--------- 工厂模式(Factory) 在给大家介绍工厂模式之前,我想和大家聊聊面向对象的那点事,在这里,引入三个概念. 开闭原则(Open Close ...
- Java中的IO流系统详解(转载)
摘要: Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java ...
- java中基本输入输出流的解释(flush方法的使用)
转自:http://fsz521job.itpub.net/post/5606/34827 网络程序的很大一部分是简单的输入输出,即从一个系统向另一个系统移动字节.字节就是字节,在很大程度上,读服务器 ...
- [转载]java中try 与catch的使用
留着以后看 原文地址:与catch的使用">java中try 与catch的使用作者:碌碌如玉 try{ //代码区 }catch(Exception e){ //异常处理 } 代码区 ...
随机推荐
- c12---数组
// // main.c // 数组基本概念 // // Created by xiaomage on 15/6/9. // Copyright (c) 2015年 itcast. All right ...
- vmvare如何安装xp虚拟机
http://jingyan.baidu.com/article/a681b0ded8e25e3b19434640.html 一直以来,许多的朋友都不熟悉怎么安装在虚拟机上装windows系统 200 ...
- matlab基本语法
MATLAB基本语法 点乘运算 , 常与其他运算符 点乘运算,常与其他运算符联合使用(如.\) 矩阵生成 矩阵生成 向量生成或子阵提取本节将会介绍一些MATLAB的基本语法的使用. 持续更新... 在 ...
- 阿里云服务器用Docker配置运行nginx并访问
一.Docker拉取nginx镜像 docker pull nginx:1.12.2 这里是下载的是nginx的1.12.2版本,其他版本的镜像请访问https://hub.docker.com/r/ ...
- 几种AutoLayout自动布局所经常使用的布局约束类型
width表示约束ui控件的固定宽度 height表示约束ui控件的固定高度 Leading Space to Superview 与父视图的左边界线保持固定距离 Trailing Space to ...
- 基于任务的编程模型TAP
一.引言 在上两个专题中我为大家介绍.NET 1.0中的APM和.NET 2.0中的EAP,在使用前面两种模式进行异步编程的时候,大家多多少少肯定会感觉到实现起来比较麻烦, 首先我个人觉得,当使用AP ...
- PHP的错误处理和异常处理
由于教程是围绕着文件打开做的错误处理,所以先记录几个用于文件处理的一些函数,fopen 用于打开一个文件:file_exists 用于检查目录是否存在:fclose( $变量 )用于指定关闭打开的文件 ...
- 2017.7.15清北夏令营精英班Day1解题报告
成绩: 预计分数:20+10+40 实际分数:100+10+40. 一百三十多人的比赛全场rand7还水了个鼠标+键盘 unbelievable! 考试题目链接: https://www.luogu. ...
- Java实现18位身份证校验代码
import java.util.Scanner; /** * 18位身份证校验 * @author [J.H] * */ public class Test { // 身份证校验 public st ...
- 路飞学城Python-Day33
1.简述计算机操作系统中的“中断”的作用? 为什么有中断? 现代操作系统一般都是采用基于时间片的优先级调度算法,把CPU的时间划分为很细粒度的时间片,一个任务每次只能时间这么多的时间,时间到了就必须交 ...