Java中I/O的分析
Java中I/O的原理:
在java程序中,对于数据的输入/输出操作以”流“的方式进行的。
流是内存中一组有序数据序列
Java将数据从源读入到内存当中,形成了流,然后这些流可以写到目的地。
Java中流按功能分为:节点流(原始流)和处理流(包裹流)
处理流是在节点流的基础上提供了更加强大的读写功能
Java中流按处理数据的不同分为字节流和字符流
字节流:以字节为单位来处理数据的,字节流数据为8位,一般用于对二进制的数据的读写,例如声音,图像等。
字符流:以字符为单位来处理数据的,一般用于读写文本文件的
字节流
- 字节流的基类是抽象类InputStream和OutpuStream。
- InputStream用于输入,OutputStream用于输出。
package src;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
//输入外->内,读入数据,输出:内->外,写数据
//任务:从file1文件读取数据到内存,a.输出到控制台验证,b.输出到file2文件中
//1,创建一个给予file1的文件对象,,创建一个给予file2的文件对象,
File f1=new File("c:\\file1.txt");
File f2=new File("c:\\file2.txt");
//2、 建立一个基于c:\\file1.txt文件的输入通道fis,建立一个基于c:\\file2.txt文件的输 出通道fos,
try {
FileInputStream fis=new FileInputStream(f1);
FileOutputStream fos=new FileOutputStream(f2);
//3、把通道fis数据读入到内存,从内存写到file2文件
int m;
while((m=fis.read())!=-1)
{
fos.write(m);
}
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}

其它方法:
字节流子处理流
字符流
package src; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; public class Test { public static void main(String[] args) { File f1=new File("d:\\file1.txt"); File f2=new File("d:\\file2.txt"); try {
FileReader fis=new FileReader(f1);
FileWriter fos=new FileWriter(f2); int m;
while((m=fis.read())!=-1)
{
//输出到控制台上
//System.out.print((char)(m));
//输出到file2.txt文件上
fos.write((char)(m));
} } catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
字符流之处理流
系统类及流的概念
System类是Java语言中一个功能强大、非常有用的类,它提供了
标准输入/输出及运行时的系统信息。从System类不能创建对象,也
就是说,System类的所有属性和方法都是静态的,引用时要以
System作为前缀。System.in与System.out是System类的两个静态
属性,分别对应系统的标准输入/输出流。
其中,System.in称为标准输入流,用于程序输入,通常读取用户
从键盘输入的信息;System.out称为标准输出流,用于程序输出,
通常向用户显示信息;System.err称为标准错误流,用于向用户显示
出错信息。
package src;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
System.out.println("请输入数据:");
try {
int i = System.in.read();
System.out.println("输入的数据为:"+(char)i);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//读取控制台信息到文件中去,当输入“q”时退出
package src; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class Test { public static void main(String[] args) { File f = new File("d:\\file1.txt");
try {
FileOutputStream fop = new FileOutputStream(f);
while(true){
//创建缓冲数组
byte[] b = new byte[1024];
System.out.println("请输入数据:");
//将输入的数据放入缓冲区中,返回输入的字符串
int len = System.in.read(b);
if(b[0]=='q'){
System.out.println("退出");
break;
}else{
//将数据从0偏移开始读取len个字符
fop.write(b, 0, len);
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
数据流
DataInputStream类

缓冲流(字符流)
转换流

Java中I/O的分析的更多相关文章
- Java中ArrayList源码分析
一.简介 ArrayList是一个数组队列,相当于动态数组.每个ArrayList实例都有自己的容量,该容量至少和所存储数据的个数一样大小,在每次添加数据时,它会使用ensureCapacity()保 ...
- Java中json工具对比分析
Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.c ...
- Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)
(一)Eclipse中的快捷键: ctrl+shift+f自动整理选择的java代码 alt+/ 生成无参构造器或者提升信息 alt+shift+s+o 生成带参构造 ctrl+shift+o快速导 ...
- 大杂烩 -- Java中Iterator的fast-fail分析
基础大杂烩 -- 目录 Java中的Iterator非常方便地为所有的数据源提供了一个统一的数据读取(删除)的接口,但是新手通常在使用的时候容易报如下错误ConcurrentModificationE ...
- Java中的<< 和 >> 和 >>> 分析理解
Java中的<< 和 >> 和 >>> 详细分析 <<表示左移移,不分正负数,低位补0: 注:以下数据类型默认为byte-8位 左移时不管正负,低 ...
- Java中关于“=”和“==”的分析
Java中变量分为普通原始变量(int char float等)和对象 一"=" (1)普通原始变量 普通原始变量的声明和赋值语句例如以下 int a=3; int b=a; 此时 ...
- Java中Iterator的fast-fail分析
1.fail-fast简介 fail-fast机制是java集合(Collection)中的一个错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件. 例如:当某一个线 ...
- Java中的递归原理分析
解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用 ...
- java中i=i++问题分析
http://www.ticmy.com/?p=43 重点:局部变量表 和 操作数栈的执行过程. 使用javac编译后再使用javap -c Test反编译这个类查看它的字节码,如下(只摘取main方 ...
随机推荐
- (转载)Chrome 快捷键 整理版
(转载)http://www.douban.com/group/topic/13802153/ chrome窗口和标签页快捷键: Ctrl+N 打开新窗口 Ctrl+T 打开新标签页 Ctrl+Shi ...
- HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)
Thickest Burger Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- ASP.NET返回Json数据
Schedule.ashx: <%@ WebHandler Language="C#" Class="Schedule" %> using Syst ...
- Poj 3695-Rectangles 矩形切割
Rectangles Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3846 Accepted: 1124 Descri ...
- MSW下wxWidgets的安装与编译
教程摘自网上各大博客.贴吧.论坛,结合自己的实践做了一些实质性的修改. 一.安装 首先从http://sourceforge.net/projects/wxwindows/files/2.8.12/w ...
- javascript检测属性
javascript 对象可以看做属性的集合.我们可以通过三种方式来判断某个属性是否存在于某个对象中. 1.in操作符 var o={x:1} "x" in o //True :x ...
- weekend110(Hadoop)的 第二天笔记
(2015年1月11日) 课程目录 01-NN元数据管理机制 02-NN工作机制2 03-DN工作原理 04-HDFS的JAVA客户端编写 05-filesystem设计思想总结 06-hadoop中 ...
- latin1字符集在navicat下显示乱码(mysql)
用navicat查看一个表的内容时显示如下
- ReactiveCocoa框架学习1
写block直接使用inline block的声明类型 在ARC中使用strong,如果不使用strong,则会被销毁 在非ARC中使用copy block在开发中的使用场景 把block保存到对象中 ...
- Thoughtworks的技术雷达
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Thoughtworks的技术雷达.