----------android培训、java培训、java学习型技术博客、期待与您交流!----------
JavaI/O
IO的发展
I/O是机器获取或交换信息的主要渠道。
从JDK1.4开始引入了NIO(以块为单位传输数据,添加异步通信)。
从JDK1.7又添加了新特性NIO.2为该语言增加了异步通道功能和新的文件系统API。
把IO操作类分为四组
-
基于字节操作的 I/O接口:InputStream和OutputStream
-
基于字符操作的 I/O接口:Writer和Reader
-
基于磁盘操作的 I/O接口:File
-
基于网络操作的 I/O接口:Socket
前两组根据数据格式,后两组根据传输方式。我们关注的就是如何提高它的运行效率了,而数据格式和传输方式是影响效率最关键的因素了。
基于字节操作的I/O接口
一个是操作数据的方式是可以组合使用的,如:
OutputStreamout = new BufferedOutputStream(new ObjectOutputStream(newFileOutputStream("fileName"));
流最终会写到磁盘或者网络中(其实从上面的类图中我们发现,写网络实际上也是写文件,只不过写网络还有一步需要处理就是底层操作系统再将数据传送到其它地方而不是本地磁盘)。
例:请利用FileInputStream和FileOutputStream类的相关方法实现文件拷贝。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteFileCopy {
public static void main(String[] args) throws IOException {
new ByteFileCopy("ByteFileCopy.java", "ByteFileCopy2.txt");
copyByteFile();
}
private static String resFile;//文件名
private static String disFile;//拷贝后的文件名
ByteFileCopy(String resFile,String disFile){
ByteFileCopy.resFile = resFile;
ByteFileCopy.disFile = disFile;
}
public static void copyByteFile() throws IOException{
FileInputStream fileIn = new FileInputStream(resFile);//创建文件读取流对象
FileOutputStream fileOut = new FileOutputStream(disFile);创建文件写入流对象
byte[] bufIn = new byte[1024];//字节缓冲区
int len = 0;
while ((len = fileIn.read(bufIn))!=-1) {
fileOut.write(bufIn,0,len);//写入数据
}
fileIn.close();//关闭读取流
fileOut.close();//关闭写入流
}
}
总结:IO操作类分为四组:1 InputStream和OutputStream;2 Writer和Reader;3 File;4 Socket。
----------android培训、java培训、java学习型技术博客、期待与您交流!----------