`
yu06206
  • 浏览: 109975 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

文件和IO总结

阅读更多

 

 

文件和IO总结

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

FileString  parentString  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 exception
			e.printStackTrace();
		}
		return fileCount;
	}

}

  二.IO体系结构

 1.流的概念 

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

2.流的分类:

    流按方向分为输入流(InputStream)和输出流(OutputStream):

    流按性质分为:

    基础字节流: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;
		
		
	}
}
 

 

缓冲字节流:BufferedInputStream/BufferedOutputStream,过滤流是用来包装基础字节流,以提供更好的特性,如提供缓冲           功能的BufferedInputStream/BufferedOutputStream,过滤流并不直接连接数据源。

 

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());
	}	
}
 

 

 

 

 

分享到:
评论

相关推荐

    Linux文件IO跟标准IO总结

    文件中详细描述了,Linux中的文件IO内容,跟标准IO内容详解,以及两者之间的区别,并进进行了比较,新人比较容易看明白

    文件IO编程总结

    自己总结的文件IO函数,和比较常用的用法,尤其适合初学者。

    IO文件流总结

    字节流、文件流、文件操作、字节流文件流相互转换,流的包装

    java中的IO操作总结(四)

    java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...

    磁盘IO的总结

    每个文件描述符对应内核中一个叫file的对象,而每个文件对应一个叫inode的对象。假设某个进程两次打开同一个文件,得到了两个文件描述符,那么在 内核中对应的是两个file对象,但只有一个inode...因此不会提升IO性能。

    IO流pdf宝典

    JAVAIO流总结宝典,分享给大家,总结较为全面

    Java考试前总结(包含io输入输出流/线程/特殊for语句/文件读写的总结)

    里面有我刚开始学习Java时,关于io输入输出流的总结及代码,还有线程的两种实现方法的总结及代码展示,文件的读写展示,还有Java中特殊for语句的展示!供初学者学习参考!

    javaIO字符流文件写入总结共1页.pdf.zip

    javaIO字符流文件写入总结共1页.pdf.zip

    javaIO字节流读取文件方式总结共4页.pdf.zip

    javaIO字节流读取文件方式总结共4页.pdf.zip

    java commons-fileupload1.2.2和common-io.1.3.2文件上传总结心得

    个人使用common-fileupload1.2.2和io-1.3.2时总结

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader...演示错误用法和经典用法。 4、代码的结构可查看README文件。

    Visual+C#+2005文件IO与数据存取秘诀

    Visual+C#+2005文件IO与数据存取秘诀 这个都是本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的

    java中的IO操作总结(一)

    java中的IO操作总结(一) 所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节(我想,文章太长了,谁都没耐心翻到最后) 对于文件内容...

    关于C#IO问题

    这是一篇关于C#IO文件操作的代码总结,有兴趣的可以看一下

    java 复制文件 io流操作

    完整的文件io 流操作,有四个函数, Writer read inputStream outputStream自己总结的东东,让大家用用,不图得分,

    文件流总结

    io流总结io流总结io流总结io流总结io流总结io流总结io流总结

    Java之IO流学习总结

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...

    java IO流总结.md

    java I/O流的总结 1.操作数据单位:字节流、字符流 对于文本文件(.txt,.java,.c,.cpp),使用字符流处理 对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,...),使用字节流处理 2.数据的流向:输入流、输出流 ...

    自己总结的Java文件的思维导图Io流.xmind

    IO流

    java IO章节的总结

    IO从大的方向上分为字节流和字符流,包括四个抽象类: 1、输入:Reader, InputStream类型的子类(字符,字节) 2、输出:Writer, OutputStream类型的子类(字符,字节) 决定使用哪个类以及它的构造进程的一般...

Global site tag (gtag.js) - Google Analytics