A. java的输入输出流是什么有几种
以下是个人理解。流可以分为字节流和字符流区别嘛,你去搞清楚字节和字符的区别就知道了。流,其实没必要认为太高深,字节流的输入流,就是InputStream,他有个read()方法,而且有很多重载read(byte[]b)什么的,就是把文件转换成字节,后一个方法就是把转换的字节放到一个byte数组中。例如你定义一个File file=new File("d:/test.txt");byte[]b=new byte[1024];FileInputStream fis=new FileInputStream(file);fis.read(b);fis.close();//b里现在就放的是从文件d:/test.txt读取的字节(当然这不太严谨,可能会有错误)//现在是输出流FileOutputStream fos=new FileOutputStream(new File("d:/target.txt"));//write方法这个是byte数组中的字节放到目的文件d:/target.txt中fos.write(b);fos.close();这个是很简单的写法,没考虑文件大小,出现数组越界千万别怪我,手敲代码很烦呢,可能有错误,自己慢慢体会,这个急不来
B. java怎么区分输入流和输出流
这个是依照内存为标准的,以加载磁盘上的文件到内存为例, 首先你必须把 磁盘上的文件,加载到 内存中,这个就是输入到内存, 你把内存里的文件,写到磁盘上,这个是把内存输出到磁盘上, 以内存为标准,写进内存,就是输入, 内存本身有内容,输出到别的地方,就是输出,一些网络的输入输出流,跟这个是一样的概念,以 客户端发送HTTP请求为例,客户端准备好了HTTP请求的内容,发送给服务器,这个就是输出流, 服务器返回一些内容,写进你本地的内存,这个就是输入,但是对于服务器来说,这个又是不一样的,你的请求对服务器来说,是输入,服务器给你的内容就是输出了。一端的输入,对于另一端来说就是输出,一端的输出,对另一端就是输入。
C. java中的输入输出流该怎么理解
数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
“流是磁盘或其它外围设备中存储的数据的源点或终点。”
在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?
在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:
标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据冲外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。
D. 怎么理解Java的输入输出流
输入输出是相对内存来说的,比方说,你站在内存的角度来看,有数据读进内存就是输入,数据被从内存取出就是输出,至于流是数据的一种形式不懂就去看看数据结构的书,知道这个答复不能利你满意,只是想让你找着方向而已,我以前也迷糊了好长时间……
E. Java里那个输入流和输出流怎么用
//java中使用文件输入流和文件输出流进行文件读写的用例!
Java
packagecom.test.io;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
/**
*
*@author亚当爱上java
*用例内容:文件输入流和文件输入流结合用例,字节流方式
*时间:2010-06-20
*注意事项:文件输入流和文件输出流都是相对与内存来说的,例如通过程序读取文件时往内存输入数据就是文件输入流
*/
publicclassFileInputOrOutput{
publicstaticvoidmain(String[]args){
//文件或者路径名的抽象表现形式,意思就是说之后如果进行操作的话就是全部在这个抽象路径名所指向的文件或者文件加中
Filefile=newFile("e:/test.txt");
Filefile2=newFile("e:/test1.txt");
//文件字节数的个数
//System.out.println(file.length());
try{
/*------------------------------------------读操作部分-----------------------------------------------*/
//文件输入流对象
InputStreamfis=newFileInputStream(file);
//文件输入流对象所读取的字节数大小
//System.out.println(fis.available());
/**
*1.按照一个字节为单位进行读取数据,弊端是遇到中文就会把中文的汉字拆开从而出现乱码
*/
////流对象读出的返回值是每次所读到的一个字符所对应的ascii码值
//inti=fis.read();
//
////如果已经读到文件尾则i==-1,此时终止循环
//while(i!=-1){
//System.out.print((char)i);
//保证每一次循环都继续往后读取一个字符,否则i的值不变会成为死循环
//i=fis.read();
//}
/**
*2.按照一个字节数组所指定的大小为单位进行读取,每次最多可以读取数组定义的大小的字节个数
*/
//每次读取都以1K字节作为单位来进行
byteb[]=newbyte[1024];
//流对象读出并返回的是每次读取字节的个数,最大每次读取自己数可以和数组b.length相同
//b中存储了每次所读取的所有数据
inti=fis.read(b);
Stringstr="";
//如果已经读到文件尾则i==-1,此时终止循环
while(i!=-1){
//把每次读取的字节数组解码为字符串
//参数1:要解码为字符的字节
//参数2:要解码的首字符的索引
//参数3:要解码的字节的个数,如果文件个数大于所设定的一次读取文件的大小时i的取值就是
//b.length,否则小于数组的字节大小时则为实际的读取出自己数的大小
str=str+newString(b,0,i);
//保证每一次都往文件的下一部分进行读取,否则i值没有变化会成为死循环
i=fis.read(b);
}
//System.out.print(str);
//关闭输入流对象
fis.close();
/*------------------------------------------写操作部分-----------------------------------------------*/
//文件输出流对象
OutputStreamfos=newFileOutputStream(file2);
//str是从file所指定的文件中读出的所有内容,将此内容写入另一个文件中
//将字符解码为字节数组
byteb2[]=str.getBytes();
//将解码后的字节数组,通过文件输出流对象写入到缓冲区中
fos.write(b);
//强制将缓冲区中的内容输出到文件中
fos.flush();
//关闭输出流对象
fos.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}