Java的输入输出与文件读写(一)
java的输入输出与文件读写
凭据数据的传输偏向,流 以是未经加工的原始二进制数据,又可以是颠末必然编码处理惩罚后切合某种名目划定的
特定命据,即流是由位(bits)组合可能字符(character)组成的序列,如字符流序列、数字流序列。
将数据从外设或外存(如:键盘、鼠标、文件)通报到应用措施的流称为输入流(input stream);将数据从应用措施通报到外存或外设(屏幕、打印机)的流称为输出流(output stream)。即:输入流读取数据(这里指的是应用措施读取数据),输出流写入数据(这里指的是应用措施写入数据)。
流式输入输出的特点:
1、是数据的获取和发送是沿着数据序列顺序举办,每个数据必需期待排在它前面的数据读入可能送出之后才气被读写,每次读写操纵处理惩罚的都是序列中剩余的未读写数据的第一个,而不能随选择输入输出的位置。
2、回收数据流来处理惩罚输入输出使得应用措施的输入输出操纵独立于相关设备,每一个应用措施可以用于多个输入输出设备,而不需要对源代码作出任何修改。加强了措施的可移植性。
输入输出流凭据处理惩罚数据的范例分为:字节约(bate stream)和字符流(character stream)。字节约每次读写8位二进制数,由于它只能讲数据以二进制的方法读写,而不能解析、重组和领略这些数据,所以可以使之调动、规复到本来的有意义的状态,因此字节约有称为二进制流(binary byte stream)或位流。而字符流一次读写16位二进制数,并将其作为一个字符而不是二进制位来处理惩罚。
字节约:处理惩罚字节数据(根基范例为InputStream、OutputStream)
字符流:处理惩罚字符数据(根基范例为Reader、Writer)
文件类:File,用于对磁盘文件和文件夹的打点。即:File是对文件存储的存眷,好比文件最后的修改时间、存储位置等,而流是对文件内容的存眷。这是二者的区别。
示例1:在措施中建设一个文本文件file.txt,写入从键盘输入的一串字符,然后再读取该文件并将文本文件的内容显示在屏幕上。
//filename:FileTest.java import java.io.*; class FileTest{ public static void main(String[] args){ char ch; int data; try{ FileInputStream fis = new FileInputStream(FileDescriptor.in);//声明并建设FileInputStream范例工具,初始化工具为键盘输入 FileOutputStream fos = new FileOutputStream("d:\\myfile.txt");//声明并建设FileOutputStream范例工具,初始化工具 System.out.println("请输入一串字符串,并以 # 竣事:"); while((ch=(char)fis.read()) != '#')//强制范例转换为char并判定 fos.write(ch); fin.close(); fos.close(); FileInputStream fi = new FileInputStream("d:\\myfile.txt");//声明并建设FileInputStream范例工具,初始化工具 FileOutStream fo = new FileOutputStream(FileDescriptor.out);//声明并建设FileOutputStream范例工具,初始化工具 while(fi.avaliable() > 0) { data = fi.read(); fo.write(data); } fi.close(); fo.close(); } catch(FileNotFoundException e){ System.out.println("文件没找到"); } } }
示例2:用FileInputStream和FileOutputStream实现对二进制图像文件的复制
//filename:ImageFileTest.java import java.io.*; public Class ImageFileTest{ public static void main(String[] args) throws IOException{ FileInputStream fi = new FileInputStream("d:\\scenery.jpg);//声明并建设FileInputStream范例的工具,初始化工具 FileOutputStream fo = new FileOutputStream("d:\\copyScenery.jpg");//声明并建设FileOutputStream范例的工具,初始化工具 byte [] b = new byte[fi.available()];//建设byte范例的数组 fi.read(b);//将图形文件读入b数组 fo.write(b);//将b数组的数据写入新文件'copyScenery.jpg' System.out.println("文件已被复制并改名"); fi.close(); fo.close(); } }
原文: http://1395573703.iteye.com/blog/2351371