读书人

资料和IO总结

发布时间: 2012-10-09 10:21:45 作者: rapoo

文件和IO总结

?

一、File类
File(String path):构造放法,参数为文件夹或文件的全路径。还有很多构造方法包括根据文件夹名创建一个文件

File(String ?parent,String ?child)以一个名为parent字符串作为父目录名,创建一个指向名为child文件对象

boolean exists()方法是判断File文件对象是否存在
否为文件还是文件夹
boolean createNewFile():根据文件路径(构造方法传入),创建一个文件。
boolean mkdirs():根据文件路径创建一个或者多个文件夹。
String getPath():得到全路径
String getName():得到文件名字
File[]listFiles():列出目录中的所有文件和文件夹

?

package java0725;import java.io.File;public class FileDisplay {/** * @param args */ public int printDir(String dirName) {int fileCount = 0;try {File dirFile = new File(dirName);File[] subFile = dirFile.listFiles();if (null == subFile || subFile.length == 0) {return 0;}for (int i = 0; i < subFile.length; i++) {if (subFile[i].isDirectory()) {String subDir = subFile[i].getAbsolutePath(); System.out.println("目录:" + subDir);//MyFrame.ja.append("目录:" + subDir);//fileCount += printDir(subDir);if(subDir.indexOf(Listener.str02)>=0){MyFrame.ja.append("文件:" + subDir);fileCount += printDir(subDir);} }if (subFile[i].isFile()) {String fileName = subFile[i].getAbsolutePath(); System.out.println("文件:" + fileName);String strin = BaseIO02.readFile2String(fileName);if(strin.indexOf(Listener.str02)!=-1){MyFrame.ja.append("文件:" + fileName  + "\n");}fileCount++; }}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}return fileCount;}}

??二.IO体系结构

  流是字节序列的抽象概念。流和文件的差别:文件是数据的静态存储形式,而流是指数据传输时的形态。文件只是流 ? ? ?的操作对象之一。流按其操作的对象不同可以分为文件流、网络流、内存流、磁带流等。

? ? 基础字节流:⑴InputStream类:程序可以从中连续读取字节的对象叫输入流,在Java中,用InputStream类来描 ? ? ? ? ? ? ? ?述所有输入流的抽象概念。这个类是抽象类。?
  ? ? ? ? ? ? ? ??⑵OutputStream类:程序可以向其连续写入字节的对象叫输出流,在Java中,???? 用OutputStream类 ? ? ? ? ? ? ? 来描述所有输出流的抽象概念。这个类也是抽象类。

?

package java0726;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;public class BaseIO {/** *  程序主方法 */public static void main(String[] args)throws Exception {BaseIO bi = new BaseIO();String fileName = "src\\java0726\\BaseIO.java";String result = bi.readFile2String(fileName);System.out.println(result);}public String readFile2String(String fileName) throws IOException{InputStream ins = new FileInputStream(fileName);byte[] contentByte = new byte[ins.available()];ins.read(contentByte);String s=new String(contentByte);return s;}}
?

?

package java0726;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class BaseIO04 {/** * 程序主方法 */public static void main(String[] args)throws Exception {BaseIO04 bi = new BaseIO04();String srcName = "E:\\学习\\java 资料\\jdk1.6.CHM";//要复制的目标文件String backName = "D:\\jdk1.6.CHM";boolean result = bi.copyFile(srcName,backName);System.out.println("复制结果:"+result);}/*简单的文件复制 * srcName 源文件名 * destName 目标文件名 * return 是否成功 * */public boolean copyFile(String srcFile,String destFile) throws IOException{ File src = new File(srcFile);File dest = new File(destFile);//创建从源文件的输入流InputStream ins = new FileInputStream(src);//构建缓冲流BufferedInputStream bis =new BufferedInputStream(ins);//缓冲输出对象流OutputStream out = new FileOutputStream(dest);//构建缓冲流BufferedOutputStream bos = new BufferedOutputStream(out);int i=-1;long start = System.currentTimeMillis();while((i=ins.read())!=-1){ bos.write(i);}long timeCost = System.currentTimeMillis()-start;System.out.println("用时(单位:秒):"+timeCost/1000);ins.close();//清空输出流的缓存out.flush();out.close();return true;}}//用时(单位:秒):120//复制结果:true

?基于具体数据类型的流:DataInputStream/DataOutputStream


?

?基于对象的读写流:ObjectInputStream/ObjectOutputStream

????????????????? ? ?对象输入输出流需要对对象的输入输出类进行序列化,继承Serilizable接口,如果需要反序列化则需要进行Externalizable接口. transient关键字是提供成员变量不考虑此成员变量。

?

package java0726;import java.io.DataInputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import org.omg.CORBA.DataOutputStream;public class BaseIO06 {/** *  程序主方法 */public static void main(String[] args)throws Exception {BaseIO06 bi = new BaseIO06();//要写入的文件名 bi.dataTypeStream();}public void  dataTypeStream() throws Exception{String fileName = "src\\java0726\\BaseIO05.data";FileOutputStream fos = new FileOutputStream(fileName);java.io.DataOutputStream dos = new java.io.DataOutputStream(fos);//按类型写入dos.writeBoolean(true);dos.writeByte((byte)123);dos.writeChar('J');dos.writeDouble(3.1415926);dos.writeFloat(2.7182f);dos.writeInt(123456789);//dos.writeLong(9988875475859607567L);dos.writeShort((short)11223);//按类型读取java.io.DataInputStream dis  = new java.io.DataInputStream(new FileInputStream(fileName));System.out.println("\t"+dis.readBoolean());System.out.println("\t"+dis.readByte());System.out.println("\t"+dis.readChar());System.out.println("\t"+dis.readDouble());System.out.println("\t"+dis.readFloat());System.out.println("\t"+dis.readInt());System.out.println("\t"+dis.readShort());}}
?

?

?

?

?

读书人网 >其他相关

热点推荐