IO体系结构和基础应用
流的概念和分类
输入输出流都是在java.io包中的。流分为输入流和输出流,输入流:InputStream 输出流:OutputStream 。当程序要读取文件的时候,就要用到输入流,文件的字节就一个字节一个字节的输入到程序当中。而程序要保存或者输出时,就用到输出流,把字节送到相应的地址上。流可形象的比喻成水管,把一个个字节(水)送到目的地。
流的分类:
1. 基础字节流:InputStream 和OutputStream 是java中可以按最小数据单位读取的流,每次都写一个字节,基础流是直接连接到输入源的流。
2. 过滤流(节点流):过滤流是用来包装基础流以提供更好的特性,如提供缓冲功能的BufferedInputStream和BufferedOutputStream;过滤流是用来包装基础流或其他流,他并不直接连接到数据源。
3. 基于具体数据类型的流:如果要从流中读取指定的数据类型的数据,如int,long型的数值,则要使用DataInput/DataOutput接口的子类如DataInputStream和DataOutputStream;
4. 基于对象读写:jdk提供了一种强大的功能流,及对象的输入输出流,即ObjectInput/ObjectOutput接口的子类,如我们使用ObjectOutputStream将一个Java对象写入到文件中;对象流的读取就是常说的java对象序列化技术。
InputStream(输入流):
InputStream是抽象类,所以要使用输入流,得使用它的子类。(FileInputStream,ObjectInputStream,PipedInputStream。。。。。。。)
FileInputStream:文件输入流
主要有两个构造器:
FileInputStream(File file):通过文件对象做参数构造输入流对象
FileInputStream(String name):通过文件路径名连接到指定文件的输入流
主要方法:
Void close():关闭输入流,
Int available():流中可读取的字节的有效长度。
Int read():这个方法会调用下一个字节作为一个byte值,进行文件的读入操作。虽然返回的是int型,但是计算机读取的是一个byte。
Int read(byte[] b):从流中读取的byte
文件读入操作有两种做法,一种是一次性读取一个byte数组,另一种是一个byte一个byte来读取。
1. InputStream is = new FileInputStream(fileName);
//创建一个数组。
Byte[] b = new byte[is.available()];
//将读取的字节读到数组去
Is.read(b);
String s = new String(b);
Return s;
2. 2. InputStream is = new FileInputStream(fileName);
//创建一个数组。
Byte[] b = new byte[is.available()];
//count用来计数下标
Int count = 0;
//读取每一个字节,如果返回-1则表示读完了
While((i=is.read()!=-1){
B[count] = (byte)I;
Count++;
}
String s = new String(b);
Return s;
OutputStream(输出流):
FileOutputStream文件输出流是OutputStream的子类,有如下构造器
FileOutputStream(File file):构造输出到指定文件
FileOutputStream(String path):输出到指定的文件地址
主要方法:
Void close():关闭输出流
Void write(byte[] b):将数组中的内容输出
Void flush():将输出流可能还保留在jvm内存中的数据强制输出到目标中
缓冲流:
缓冲流的作用:当执行文件输入输出流的时候,程序会将一个字节先从程序中读入到vm内存,再到系统内存,再到源文件上,然后将此字节原路返回。读入的时候就将这个字节从程序中送到vm内存,再到系统内存,再到目标文件。如此一来,文件一大的话,输入输出的时间就会很长。而缓冲流是将读取的文件字节先保存在缓冲区中,等到缓冲区满了,在一次性输出到目标文件,这样的话就可以大大的节省了时间。
BufferedInputStream是InputStream的子类,有如下构造器
BufferedInputStream(InputStream is):使用一个InputStream类型的输入流对象创建一个默认缓冲区大小的缓冲输入对象,默认缓冲区大小在jdk1.6是8192k。
BufferedInputStream(InputStream is,int size):自定义大小的缓冲区域
BufferedOutputStream是OutputStream的子类,构造器
BufferedOutputStream(OutputStream os):
BufferedOutputStream(OutputStream os,int size):制定缓冲大小的输出流
画图板保存文件:
思路:实例化一个机器人,来截取整个画板,在此图片中一个像素一个像素点取颜色值,然后保存到一个数组中去,保存到指定路径,然后用我们写的程序打开,在重绘的时候遍历该数组,获取颜色,并画出来
重绘方法
//重绘二维数组,读取的是二维数组里面的int值(颜色),然后用画直线的方法把每一个点给画出来!!
if(array!=null){
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
g.setColor(new Color(array[i][j]));
g.drawLine(i, j, i, j);
}
}
}
截屏类
public class ScreenCapture {
public int[][] createScreenCapture(JPanel dp) throws AWTException{
//获取到画图面板的宽和高
int width = dp.getWidth();
int height = dp.getHeight();
System.out.println("宽:"+width+" 高:"+height);
//获取画图面板相对于屏幕上的坐标值
Point point = dp.getLocationOnScreen();
System.out.println("X="+point.getX()+" Y="+point.getY());
//实例化一个矩形对象
Rectangle rect = new Rectangle((int)point.getX(),(int)point.getY(),width,height);
//实例化一个机器人类的对象
Robot robot = new Robot();
//开始截取屏幕上的图片了
BufferedImage image = robot.createScreenCapture(rect);
//实例化一个二维数组兑现个,用来存储图片每一个像素点的值
int [][] array = new int[width][height];
//遍历图片,将每一个像素点的颜色取出,存入到数组中
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++){
//取出颜色,存入到数组中
array[i][j] = image.getRGB(i,j);
}
}
return array;
}
}
分享到:
相关推荐
总的来说,这个“体系结构图”涵盖了Java语言的基础、内存管理、并发编程和高级特性,是学习和复习Java的良好资源。对于初学者来说,理解这些知识点可以帮助构建完整的Java知识体系,进一步提升编程技能。在深入学习...
Java的IO流体系结构是Java开发中非常重要的组成部分,它不仅涵盖了基本的输入输出操作,还提供了高级的并发处理机制。无论是初学者还是经验丰富的开发者,掌握这些基础知识都将极大地提高编写高效、健壮的Java程序的...
### Java IO流的各种组合使用与总结 在Java中,输入/输出(IO)流是进行数据读取和写入操作的基础。本文将详细介绍Java中IO流的多种组合使用...这些知识点不仅适用于日常开发,也是深入理解Java IO体系结构的关键。
总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...
Java I/O流的处理过程是按照流的体系结构来组织的,体系结构从上到下依次为节点流、处理流和抽象基类。 节点流(也称为原始流)直接与数据源或目的地相关联,能够直接读取或写入数据。节点流包括文件流、标准输入...
Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 JVM类加载机制 JVM运行时区数据 JVM执行引擎和垃圾回收 基础语法 理解Java中对象基础Object类 ...
图一展示了Io流的知识体系结构,帮助理解不同流之间的关系。 | 类型 | 输入流 | 输出流 | |------------|----------|----------| | 字节流 | InputStream | OutputStream | | 字符流 | Reader | Writer | **表一**...
文件列表中的"Part1.pdf"可能涵盖了RapidIO的基本概念和体系架构,"Part2.pdf"可能详细解释了RapidIO的协议栈和包结构。"Part4.pdf"和"Part5.pdf"可能涉及到了物理层和传输层的细节,包括信号传输、时钟同步和错误...
### RapidIO概述与关键技术知识点 #### 一、RapidIO简介 ...通过对RapidIO体系结构、操作模型以及包格式等关键知识点的学习,可以更好地理解和掌握这一技术,为未来的高性能嵌入式系统设计提供坚实的基础。
在本文中,我们将深入探讨Java IO体系结构,关键概念以及常见用途。 Java IO系统的核心是流(Stream),流可以被视为数据的双向通道,既可以用来从源头获取数据,也可以将数据发送到目的地。Java IO分为字符流和...
#### 四、Java I/O体系结构 Java的I/O系统分为三个层次: 1. **流式部分**:这是Java I/O最核心的部分,包括`InputStream`、`OutputStream`、`Reader`、`Writer`等类。 2. **非流式部分**:包括`File`类、`...
Java的IO体系结构提供了丰富的类和接口来处理输入和输出。理解字节流和字符流的区别,以及如何利用`File`类操作文件和目录,是Java编程的基本技能。在实际开发中,正确地使用流和文件操作能有效地管理应用程序的数据...
Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...
Java的异常处理和IO流是Java编程中两个重要的概念,它们在处理程序错误和数据输入输出方面发挥着关键作用。 4.1 异常处理 ...熟练掌握异常处理和IO流的使用,是编写健壮、可维护的Java程序的基础。
一、Java IO体系结构 Java IO体系主要包括字节流(Byte Stream)和字符流(Character Stream),以及缓冲流(Buffered Stream)、转换流(Convert Stream)、对象流(Object Stream)等。其中,字节流处理单字节的...
本文将通过分析一张清晰明了的Java IO类层次图,详细介绍Java IO体系中的主要类及其关系。 #### 二、Java IO 类层次结构详解 ##### 2.1 字节流类层次结构 Java IO中的字节流类主要分为两大类:`InputStream`和`...
Java IO流体系结构复杂而强大,涵盖了处理不同类型数据的需求。无论是处理二进制数据还是文本数据,都有相应的流类支持。同时,缓冲流的使用能显著提高读写性能。了解并熟练掌握这些基本知识对于Java开发人员来说至...
这篇博客“java(IO)第二部分”可能深入探讨了Java IO体系结构的高级概念,特别是那些在第一部分没有涵盖的部分。虽然具体的博文内容无法直接提供,但我们可以基于常见的Java IO主题进行详细的解释。 首先,Java ...
总结来说,MAX 10 FPGA通用I/O系统的知识点涵盖了从基础的I/O标准支持到复杂的I/O设计和实现的多个方面,为FPGA开发人员提供了详细的设计参考。掌握这些知识点有助于设计者更有效地利用MAX 10 FPGA的功能,实现可靠...