Java的IO流是实现输入输出的基础,这里所说的流就是数据流,大部分的与流相关的类放在Java.io包下。

一,Java的流分类

按照不同的分类方式可以把流分成不同的类型,下面我们从不同的角度对流进行分类。

1,按照流的方向可以分为输入流与输出流

      输入流:只能从中读取数据,而不能向其写出数据

      输出流:只能向其写出数据,而不能从中读数据。     2,字节流与字符流

字节流主要是以InputStream和OutputStream为基类,其对应子类有FileInputStreamFileOutputStream实现文件读写,BufferedInputStreamBufferedOutputStream提供缓冲区功能,操作的最小单位数据是8位的字节。字符流主要是以Reader和Writer为基类,其对应子类FileWriterFileReader可实现文件的读写操作,BufferedWriterBufferedReader能够提供缓冲区功能,用以提高效率,操作的最小的单位数据是16位的字符。

3,节点流与处理流

节点流:可以从/向一个特定的IO设备中读/写数据流。程序直接和数据源(物理节点)相连接。

处理流:对节点流进行包装,他可以隐藏底层设备之间的差异,对外提供了更好的输入/输出方法。

字符流

实例1:字符流的写入

public class FileInputStreamTest {

    public static void main(String[] args)  throws IOException
{
FileWriter fw = null;
try
{
fw = new FileWriter("D:\\javaPro\\ioJava\\xin.txt");
fw.write("你说的话,我都不听\r\n");
fw.write("让着故事延长\r\n");
} catch(IOException e)
{
e.printStackTrace();
} finally
{
if(fw!=null)
{
fw.close();
}
}
}
}

实例2:字符流的读取

public class ReadStreamTest {

    public static void main(String[] args) throws  IOException
{
FileReader fr= null;
try
{
fr = new FileReader("D:\\javaPro\\ioJava\\ha.txt");
char[] ch = new char[1024];
int num;
while ((num = fr.read(ch))!= -1)
{
System.out.println(new String(ch,0,num));
}
} catch (IOException e)
{
e.printStackTrace();
} finally {
if(fr!=null)
{
fr.close();
}
}
}
}

实例3:字节流的写入

public class OutPutTest {

    public static void main(String[] args) throws IOException
{
FileInputStream fi = null;
FileOutputStream fo = null;
try
{
fi = new FileInputStream("D:\\javaPro\\ioJava\\ha.txt");
fo= new FileOutputStream("D:\\javaPro\\ioJava\\xin.txt");
byte[] by = new byte[1024];
int num;
while((num = fi.read(by))!=-1)
{
fo.write(by,0,num);
}
} catch(IOException e)
{
e.printStackTrace();
} finally
{
if(fi!=null)
{
fi.close();
}
if(fo!=null)
{
fo.close();
}
}
}
}

实例4:字节流的读取

public class Test {
public static void main(String[] args) throws IOException
{
String str = "D:\\javaPro\\ioJava\\ha.txt";
FileInputStream f;
f = new FileInputStream(str);
byte[] temp1 = new byte[1024];
int num;
while ((num = f.read(temp1))>0)
{
System.out.println(num);
System.out.println(temp1);
System.out.println(new String(temp1,0,num));
}
f.close();;
}
}

以上使用的都是节点流的例子,下面来看一个处理流的例子

实例5:处理流

public class FileInputStreamTest {

    public static void main(String[] args)  throws IOException
{
PrintStream ps = null;
try
{
// 创建一个节点流
FileOutputStream fs = new FileOutputStream("D:\\javaPro\\ioJava\\xin.txt");
// 用 PrintStream来包装 FileOutputStream输出流
ps = new PrintStream(fs);
// 使用 PrintStream来执行输出
ps.println("普通字符");
// 直接使用 PrintStream输出对象
ps.println(new FileInputStreamTest()); } catch(IOException e)
{
e.printStackTrace();
} finally
{
if(ps!=null)
{
ps.close();
}
}
}
}

从上面可以看出来程序使用处理流非常简单,只需要在创建处理流时传入一个节点流作为构造函数的参数,这样创建的处理流就是包含了节点流的处理流。。。

java的IO总结(一)的更多相关文章

  1. java的IO流

    java的IO流继承四大抽象类分别是字节流 inputStream outputStream与字符流 read write.怎么理解记忆很重要. 直接连接读写对象的是结点流,例如对文件读取字节类的名字 ...

  2. java之io之File类的list()方法过滤目录的使用

    java的io的知识中,File类必须掌握.File类是对文件或者文件夹的封装.它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等. 如果Fi ...

  3. Java 新IO

       NIO提供全新的底层I/O模型.与最初的java.io包中面向流(stream-oriented)概念不同,NIO采用了面向块的概念(block-oriented).在尽可能的情况下,I/O的操 ...

  4. JAVA中IO总结

    JAVA中IO流主要分为两大类: 字节流:InputStream+OutputStream 字符流:Reader+Writer 字节流: InputStream是所有字节输入流的父类 OutputSt ...

  5. Java基础——IO流

    今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...

  6. 【Java】IO流简单分辨

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827509.html Java的IO流体系十分庞大,并且体系层次稍复杂,很容易记混或记错.在此,我把平时经常用 ...

  7. JAVA中IO技术:BIO、NIO、AIO

    1.同步异步.阻塞非阻塞概念        同步和异步是针对应用程序和内核的交互而言的. 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作 ...

  8. Java - 文件(IO流)

    Java - 文件 (IO)   流的分类:     > 文件流:FileInputStream | FileOutputStream | FileReader | FileWriter     ...

  9. JAVA的IO运用

    IO OF JAVA想写好一篇关于JAVA的IO的文章不容易,因为它涉及的东西很多难以写得有深度和有思路.我虽不才但也写.这篇文章有我个人不少的见解,虽然涉足计算机不深但我不想用一大堆这个可能那个可能 ...

  10. JAVA的IO学习

    IO 有具体的分类: 有具体的分类:1:根据处理的数类型不同:字节流和字符流.2:根据流向不同:输入流和输出流. =============(补充字节跟字符概念区分)================= ...

随机推荐

  1. 使用grep进行文本查找

    命令模式: grep "文本" -rl 路径 例子: grep "w3.the.abc.com" -rl /home/hy/fluent3 有时候需要排除掉一些 ...

  2. 《Java程序设计》第16周周四:GUI编程及文件对话框的使用

    第一部分:实验项目  项目一:文件及选择 目的:了解文件对话框的用法,熟悉GUI中事件驱动的核心步骤. 1. 阅读博文 "JFileChooser (Java Swing提供的文件选择对话框 ...

  3. Wndows 主进程(Rundll32)已停止工作

        打开电脑,出现"windows 主进程(Rundll32)已停止工作",百度了一下,是文件损坏了.     下载一个新的文件,替换即可,若遇到权限问题,使用魔方工具中的设置 ...

  4. Python编程-Office操作-操作Excel(中)

    例子文件如下: 一些复杂的读取操作getCells.py import openpyxl wb = openpyxl.load_workbook('example.xlsx') sheet = wb. ...

  5. I/O控制方式

    I/O控制方式 在计算机系统中,CPU管理外围设备也有几种类似的方式: 1 程序查询方式 程序查询方式是早期计算机中使用的一种方式.数据在CPU和外围设备之间的传送完全靠计算机程序控制,查询方式的优点 ...

  6. EventBus源码分析

      一.         EventBus简介 1.1.EventBus EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化Android 事件传递,这里的事件可 ...

  7. promise 承诺

    概念 ES6 原生提供了 Promise 对象. 所谓 Promise,就是一个对象,用来传递异步操作的消息.它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的 API, ...

  8. Cocos2d-x新建模板编译问题总汇

    0:关于使用VC模板创建模板时候脚本错误.改动..\cocos2d-x-2.2.2\template\msvc\CCAppWiz.win32\HTML\1033中文件属性中:安全->解除锁定. ...

  9. git查看各个branch之间的关系图

    两种方法: 一.  使用Git log命令 git log --graph --decorate --oneline --simplify-by-decoration --all 说明: --deco ...

  10. Swift教程_swift常见问题(0005)_完美解决Cannot override 'dealloc'异常

    Swift教程_swift常见问题(0001)_CoreData: warning: Unable to load class named 'xxx' for entity 'xxx' Swift教程 ...