Javaio流的概念,JAVA中IO流如何理解

1 , JAVA中IO流如何理解你首先得弄清楚流的概念,流是对输入输出设备的抽象 , 输入输出设备比如:文件、显示器、内存等等,他们都可成为流,至于是输入流还是输出流则是一个相对的概念,我们可将程序作为一方,将流(设备)作为另一方,如果数据的流向是程序至流(设备),我们成为输出流,反之我们称为输入流 。希望能对你有帮助!IO包括输入和输出流,输入流指的是将数据以字符或字节形式从外部媒介比如文件、数据库等读取到内存中所以也分为字符输入流和字节输入流 。输出流指的是将内存中的数据写入外部媒介,也分为了字符输出流和字节输出流 。可以将输入和输出两个端点看作是两个工厂,工厂之间需要互相运输货物 , 而流则是两工厂之间的公路,没有公路就不能互相运输,至于字符 , 字节和二进制则可以看作是运输的方式和单位大小,比如说把二进制理解成三轮车......那么字节就是小卡车,而字符则是集卡之类的...
2,java中的IO流是什么啊该怎么理解啊关于你这个方向性的问题我一开始学的时候也觉得反了 。后来搞清楚目标对象就懂了 。理解Java的IO流,首先要把视角放在内存上 , 而不是放在文件上 。InputStream是用来写入的没错,但不是写入文件中,而是写入内存中 。所以InputStream的作用是从文件中读取数据然后写入内存中或者说写入到正在运行的程序中 。而OutputStream同理,是从内存/程序中将数据推送出去,把数据保存到文件中 。以Java程序作为主视角 , 你就能懂了 。Input读取是为了读给程序用,Output写出是程序把数据输出到硬盘上了 。【Javaio流的概念,JAVA中IO流如何理解】
3,Java中的IO流怎么理解那个流啊理解成管道...java中的io流是输入输出流 。至于理解,可以将输入和输出两个端点看作是两个工厂,工厂之间需要互相运输货物 , 而流则是两工厂之间的公路,没有公路就不能互相运输,至于字符,字节和二进制则可以看作是运输的方式和单位大小,比如说把二进制理解成三轮车,那么字节就是小卡车 , 而字符则是集卡之类的 。就那些类嘛,你多看下API,就知道了,主要就是那些类的一些方法,会用.字符,字节,二进制指的应该是不同的类一次读取数据的单位吧,有的是按字符读,有的是按字节读,不一样的,我们的任务会用它读就行啦!!可以将输入和输出两个端点看作是两个工厂,工厂之间需要互相运输货物,而流则是两工厂之间的公路,没有公路就不能互相运输,至于字符 , 字节和二进制则可以看作是运输的方式和单位大小 , 比如说把二进制理解成三轮车......那么字节就是小卡车,而字符则是集卡之类的...
4,java中什么是IO流I/O为input(输入)/ output(输出)的简称,在Java中input和output代表将数据从其他地方写入程序例如从文件中读取文件,将文件内容保存在程序内存中,output代表程序将数据输出到某些地方,例如利用程序向文件中保存内容等,在Linux系统中,有一切皆文件的概念,不管对于任何文件 , 设备,网络设备等,在Linux下都被当做文件来进行处理;在Java中IO操作是很重要的一块内容,从数据的传输方式来区分的话,可以分为字符流和字节流;这两者的主要区别在于数据流当中数据的最小单元,字节流代表读取数据的最小单位是字节,读取的时候可以一个字节一个字节的获取内容;字符流代表的是读取内容的时候是按照一个字符一个字符的读取;一个字符根据编码格式的不同 , 可能会包含多个字节,比如我们通常使用的utf-8的编码格式,在程序读取处理数据的时候,会根据编码格式从指定的编码表中获取到数据的字节数,然后再去获取指定字节大小的数据;在一般我们处理数据的时候,如果是处理文本类数据 , 可以优先考虑使用字符流 , 如果处理其他类型的数据,比如图像 , 视频等使用字节流进行处理;从java源码中我们可以看到字节流的处理是以InputStream和OutputStream两个为基类,派生出很多的子类进行数据的处理,字符流的处理是以Reader和Writer两个为基类,派生出其他的子类进行数据处理;在IO操作中,根据数据的传输方向,可以区分为输入流与输出流,其中输入输出方向的参考物是以程序为标准,将数据从数据源(比如文件,网络)中读取到程序中表示输入流;程序将数据输出到其他地方(比如文件,网络)中表示输出流;输入输出都是以程序来进行参考;在java中我们可以根据类的命名区分出处理的是输入流还是输出流:InputStream和Reader及其子类代表的输入流的操作,OutputStream和Writer及其子类代表的是输出流的操作;在java中除了这些操作上述的基本类之外,java还提供了处理文件的类File,使用File类创建的对象,可以进行文件或者文件夹的创建 , 删除 , 重命名等操作 。在File对象中,包含了文件的基本属性,比如文件名,文件路径,文件大小,修改时间等 。5,java中的IO流是什么啊该怎么理解啊我给你打个比方你就明白了;比如你家的水龙头的管道就是一个流:流又分为输入输出流,输入流就是你家水龙头抽水库水的那头(FileInputStream:将水抽到管道里面),输出流就是你家水龙头流到你家大水缸的那头(FileOutputStream:将水流到缸里) 。现在有个A.txt文件,你要读取里面的信息,就相当于水龙头抽水库水到管道(FileInputStream),然后读取完后写入到另一个文件里面(FileOutputStream),就是相当于水龙头将抽到水后流到大水缸 。很简单吧,就是一进一出的事,没这么复杂 。别太官方了Java中的IO流是输入输出流 。至于理解,可以将输入和输出两个端点看作是两个工厂,工厂之间需要互相运输货物,而流则是两工厂之间的公路,没有公路就不能互相运输,至于字符,字节和二进制则可以看作是运输的方式和单位大?。?比如说把二进制理解成三轮车,那么字节就是小卡车 , 而字符则是集卡之类的 。输入 输出的方向 是以内存为基准,往内存里去 是输入 ,内存里往外是输出不知道我这样理解对不对 。通俗一点,就类似一根管道,有进有出文件输入输出把流理解成一个中间介质 , 所谓的input和out是针对这个介质来说的,input是进入这个介质,out是这个介质输出 。6,java中什么是IO流流是1组有顺序的,有出发点和终点的字节集合 , 是对数据传输的总称或抽象 。即数据在两装备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作 。io流的分类?根据处理数据类型的不同分为:字符流和字节流?根据数据流向不同分为:输入流和输出流流是一组有顺序的 , 有起点和终点的字节集合,是对数据传输的总称或抽象 。即数据在两设备间的传输称为流 。流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作 。IO流的分类:根据处理数据类型的不同分为:字符流和字节流;根据数据流向不同分为:输入流和输出流 。理解Java的IO流 , 首答先要把视角放在内存上 , 而不是放在文件上 。InputStream是用来写入的没错,但不是写入文件中,而是写入内存中 。所以InputStream的作用是从文件中读取数据然后写入内存中或者说写入到正在运行的程序中 。而OutputStream同理,是从内存/程序中将数据推送出去 , 把数据保存到文件中 。以Java程序作为主视角,你就能懂了 。Input读取是为了读给程序用,Output写出是程序把数据输出到硬盘上了 。I/O为input(输入)/ output(输出)的简称,在Java中input和output代表将数据从其他地方写入程序例如从文件中读取文件,将文件内容保存在程序内存中 , output代表程序将数据输出到某些地方,例如利用程序向文件中保存内容等,在Linux系统中,有一切皆文件的概念,不管对于任何文件 , 设备,网络设备等 , 在Linux下都被当做文件来进行处理;在Java中IO操作是很重要的一块内容,从数据的传输方式来区分的话,可以分为字符流和字节流;这两者的主要区别在于数据流当中数据的最小单元 , 字节流代表读取数据的最小单位是字节,读取的时候可以一个字节一个字节的获取内容;字符流代表的是读取内容的时候是按照一个字符一个字符的读取;一个字符根据编码格式的不同,可能会包含多个字节,比如我们通常使用的utf-8的编码格式,在程序读取处理数据的时候,会根据编码格式从指定的编码表中获取到数据的字节数 , 然后再去获取指定字节大小的数据;在一般我们处理数据的时候,如果是处理文本类数据,可以优先考虑使用字符流,如果处理其他类型的数据,比如图像,视频等使用字节流进行处理;从java源码中我们可以看到字节流的处理是以InputStream和OutputStream两个为基类,派生出很多的子类进行数据的处理 , 字符流的处理是以Reader和Writer两个为基类,派生出其他的子类进行数据处理;在IO操作中,根据数据的传输方向,可以区分为输入流与输出流,其中输入输出方向的参考物是以程序为标准,将数据从数据源(比如文件,网络)中读取到程序中表示输入流;程序将数据输出到其他地方(比如文件,网络)中表示输出流;输入输出都是以程序来进行参考;在java中我们可以根据类的命名区分出处理的是输入流还是输出流:InputStream和Reader及其子类代表的输入流的操作,OutputStream和Writer及其子类代表的是输出流的操作;在java中除了这些操作上述的基本类之外,java还提供了处理文件的类File , 使用File类创建的对象,可以进行文件或者文件夹的创建 , 删除 , 重命名等操作 。在File对象中,包含了文件的基本属性,比如文件名,文件路径,文件大小,修改时间等 。7,Java中的IO流的基本知识刚刚手写了一个文件写入的方法, 源码贴上来package com.test;import java.io.bufferedreader;import java.io.file;import java.io.fileoutputstream;import java.io.ioexception;import java.io.inputstreamreader;public class filetestpublic static void main(string[] arg0) throws ioexception filetest ft=new filetest(); ft.write(); } public void write() throws ioexception string path=""; bufferedreader br=new bufferedreader(new inputstreamreader(system.in)); system.out.println("please input file path:"); path=br.readline(); file file= new file(path); string contents=""; if(file.exists()) fileoutputstream fops=new fileoutputstream(file,true); system.out.println("please input the matter what you will put into file:"); contents=br.readline(); byte[] ct=contents.getbytes("utf-8"); fops.write(ct); fops.close(); }else file.createnewfile(); } br.close(); } public void copy() 至于这个复制不知道你的意思是要把刚刚写的数据复制到其他的文件呢还是要把刚刚写入的整个文件复制到其他文件中,注意数据和文件之分. 其实这个不难,只要把第一个方法的部分字段定义成全局的就可以任何地方都可以引用,就可以复制了 }}}IO可以理解为JAVA用来传递数据的管道创建一个IO,就相当于将管道与某个数据源连接到一起了.如 new FileInputStream(D:\\123.txt)这个就将这个FileInputStream与d:\123.txt这个文件连接在一起了,以后的读操作就可以理解为通过这个管道与123.txt进行数据传递了.这个管道可以连接到很多地方,如一个数组,一个网络,用户的控制台,一个对像,或者是一个流上.这样就产生了不同的IO.http://blog.csdn.net/Mailbomb/archive/2009/04.aspx这哥们的blog , 写的相当详细希望对你有帮助1、与外部设备和其它计算机进行交流的输入输出操作,尤其是对磁盘的文件操作 , 是计算机程序重要的功能,任何计算机语言都必须对输入输出提供支持 。Java也不例外 , 它的输入输出类库中包含了丰富的系统工具,这些类被放在java.io包中 。在该类库中,除了定义文件输入输出操作外 , 还定义了许多用来和其他外设进行信息交换的类 。2、流(Stream)指的是在计算机的输入与输出之间运动的数据序列:输入流代表从外设流入计算机的数据序列;输出流代表从计算机流向外设的数据序列 。流式输入输出是一种很常见的输入输出方式,它最大的特点是数据的获取和发送均沿数据序列顺序进行:每一个数据都必须等待排在它前面的数据读入或输出之后才能被读写,每次读写操作处理的都是序列中剩余的未读写数据中的第一个,而不能够随意选择输入输出的位置 。磁带机是实现流式输入输出的典型设备 3、InputStream和OutputStream是java.io包中的两个抽象类 , 他们分别是其他所有输入、输出流类的父类 。其他所有输入流类都是继承了InputStream的基本输入功能并根据自身属性对这些功能加以扩充;同样,其他所有输出流类也都是继承了OutputStream类的基本输出功能并加以扩展的 4、File类是IO包中惟一代表磁盘文件本身的对象,File对象定义了一些与平台无关的方法来操纵文件 创建File类对象时需指明它所对应的文件或目录名 。File类共提供了4个不同的构造方法,以不同的参数形式灵活地接收文件和目录名信息 5、FileReader和FileWrite类分别继承自Reader类和Writer类,继承关系如图6-2所示 。FileReader类用于读取文件;FileWrite类用于将数据写入文件 。在使用这两个类之前,必须调用其构造方法创建相应的对象,然后才能调用相应的read()或write()方法进行文件的读写操作 6、BufferedReader和BufferedWrite类分别继承自Reader类和Writer类 , BufferedReader类用来从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取 。BufferedWrite类用于将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入 。7、LineNumberReader类是BufferedReader类的直接子类 。该类允许对文本输入数据流加入行号 。此类定义了方法setLineNumber(int)和getLineNumber(),它们可分别用于设置和获取当前行号 。默认情况下,行编号从0开始 。该行号随数据读取在每个行结束符处递增 , 并且可以通过调用setLineNumber(int)更改行号 。但要注意的是,setLineNumber(int)不会实际更改流中的当前位置;它只更改将由getLineNumber()返回的值 8、LineNumberReader类是BufferedReader类的直接子类 。该类允许对文本输入数据流加入行号 。此类定义了方法setLineNumber(int)和getLineNumber(),它们可分别用于设置和获取当前行号 。默认情况下,行编号从0开始 。该行号随数据读取在每个行结束符处递增 , 并且可以通过调用setLineNumber(int)更改行号 。但要注意的是,setLineNumber(int)不会实际更改流中的当前位置;它只更改将由getLineNumber()返回的值使用RandomAccessFile类随机读写文件时,在创建了一个RandomAccessFile对象之后,该文件即对文件描述句柄处于打开状态 。此时,文件的指针处于文件开始位置 。可以通过seek(long pos)方法设置文件指针的当前位置,以进行文件的快速定位,然后使用相应的read()和write()方法对文件进行读写操作 。在对文件的读写操作完成后,调用close()方法关闭文件9、FileInputStream和FileOutputStream类主要用来处理以“位为主”的输入输出操作 。其中,FileInputStream类继承于InputStream类;FileOutputStream类继承于OutputStream类 。与RandomAccessFile类所不同的是,FileInputStream和FileOutputStream类中提供的文件处理方式是文件中数据流的顺序读写 , 而不是利用文件指针进行定位的随机读写 10、Java中的PipedInputStream和PipedOutputStream类提供了利用管道方式进行数据输入输出管理 。管道流用来将一个程序或者线程的输出连接到另外一个程序或线程作为输入,使得相连线程能够通过PipedInputStream和PipedOutputStream类进行数据交换 。PipedInputStream和PipedOutputStream类也是InputStream和OutputStream类的直接子类 。这两个类必须结合使用,其中 , 管道输入流作为管道的接收端、管道输出流作为管道的发送端,在程序设计中应注意数据的传输方向 顺序输入流SequenceInputStream是InputStream的直接子类,其功能是将多个输入流连接在一起,形成单一的输入数据流,没有对应的输出数据流存在 。顺序输入流SequenceInputStream由多个输入流构造而成,它从输入流的有序集合开始,并从第一个输入流开始读取 , 直到文件末尾,接着从第二个输入流读取,依次类推,直到到达顺序输入流包含的最后一个输入流的文件末尾为止很多JAVA书中都有要点就是一条 开了数据流要记得关上,要不然系统离崩溃就不远了IO读写是两个不同的分支,通常都是分开单独使用的 。可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容 。BufferedReader bre = null;try String file = "D:/test/test.txt";bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流while ((str = bre.readLine())!= null) // 判断最后一行不存在 , 为空结束循环System.out.println(str);//原样输出读到的内容};备注: 流用完之后必须close掉,如上面的就应该是:bre.close() , 否则bre流会一直存在 , 直到程序运行结束 。可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:OutputStreamWriter pw = null;//定义一个流pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK");//确认流的输出文件和编码格式,此过程创建了“test.txt”实例pw.write("我是要写入到记事本文件的内容");//将要写入文件的内容,可以多次writepw.close();//关闭流备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担 。

    推荐阅读