黑马程序员_IO流操作_2

一、把文件实体化的类File

1)构造函数

File f=new File(“a.txt”);//这个文件不一定存在

separator是默认的目录分割符,具有跨平台性

2)功能

创建: boolean  creatNewFile();在指定位置创建文件,如果该文件已经存在则不创建。

临时文件:creatTempFile()

mkdir():创建目录(文件夹)。只能创建一级目录

mkdirs();创建多级文件夹。  

删除:boolean delete();

      void  deleteOnExit();程序退出时删除文件

判断:boolean  canExecute():判断是否可执行

      Boolean  exists();文件是否存在

     isFile();是否是文件

     isDirectory();是否是目录

     判断文件或目录是必须先判断该文件对象封装的内容是否存在

     isAbsolute();判断是否是绝对路径。文件不存在也可判断

获取信息:

      getName();

      getPath();

getParent();//如果没有明确绝对路径的话,返回的是null。

getAbsolutePath()

long  lastModified()//最后一次修改的时间

long  length()

renameTo();重命名。相当于剪切

listRoot();列出了计算机中的盘符

list()列出当前盘符下的所有文件

文件名过滤:

String[] arr=dir.list(new FilenameFilter()
{
    Public Boolean accept(File dir ,String name)
    { 
        Return  name.endsWith(“.bmp”);   
    }
}

遍历指定目录下的所有文件。利用递归原理

删除带内容的目录:

代码如下:

import java.io.*;
class FileDemo3 
{
	public static void main(String[] args) 
	{
		File dir = new File("d:\\testdir");
		System.out.println(dir.delete());
	}
	public static String getLevel(int level)
	{
		StringBuilder sb = new StringBuilder();
		sb.append("|--");
		for(int x=0; x<level; x++)
		{
			sb.insert(0,"|  ");
		}
		return sb.toString();
	}
	public static void showDir(File dir,int level)
	{
		System.out.println(getLevel(level)+dir.getName());
		level++;
		File[] files = dir.listFiles();
		for(int x=0; x<files.length; x++)
		{
			if(files[x].isDirectory())
				showDir(files[x],level);
			else
				System.out.println(getLevel(level)+files[x]);
		}
	}

总结:主要思想是利用递归原理,当判断是目录时然后再回调知道不是目录为止,这样一层一层的进入。

二、Properties对象的应用:

如下代码:

import java.io.*;
import java.util.*;
class  JavaFileList
{
	public static void main(String[] args) throws IOException
	{
		File dir = new File("d:\\java20");
		List<File> list = new ArrayList<File>();
		fileToList(dir,list);
		File file = new File(dir,"javalist.txt");
		writeToFile(list,file.toString());
	}
	public static void fileToList(File dir,List<File> list)
	{
		File[] files = dir.listFiles();
		for(File file : files)
		{
			if(file.isDirectory())
				fileToList(file,list);
			else
			{
				if(file.getName().endsWith(".java"))
					list.add(file);
			}
		}
	}
	public static void writeToFile(List<File> list,String javaListFile)throws IOException
	{
		BufferedWriter bufw =  null;
		try
		{
			bufw = new BufferedWriter(new FileWriter(javaListFile));
			
			for(File f : list)
			{
				String path = f.getAbsolutePath();
				bufw.write(path);
				bufw.newLine();
				bufw.flush();
			}
		}
		catch (IOException e)
		{
			throw e;
		}
		finally
		{
			try
			{
				if(bufw!=null)
					bufw.close();
			}
			catch (IOException e)
			{
				throw e;
			}
		}
	}
}

总结:这个代码主要的思想是:先建立一个集合用于存储所遍历到的目录,遍历目录时用的思想是递归算法,然后再利用流把集合中的数据写到文件中。

1. getProperty();//获取键值

2. setProperty();//设置键值

3. stringPropertyName();//返回的是Set集合

 Properties存取配置文件:

 把文件中的内容加载到Properties中通过load()方法和store()方法进行加载和保存,实际上他就是Map和IO的结合体。

限制一个程序运行的次数。

如下例子:

import java.io.*;
import java.util.*;
class  RunCount
{
	public static void main(String[] args) throws IOException
	{
		Properties prop = new Properties();
		File file = new File("count.ini");
		if(!file.exists())
			file.createNewFile();
		FileInputStream fis = new FileInputStream(file);
		prop.load(fis);
		int count = 0;
		String value = prop.getProperty("time");
		if(value!=null)
		{
			count = Integer.parseInt(value);
			if(count>=5)
			{
				System.out.println("您好,使用次数已到,拿钱!");
				return ;
			}
		}
		count++;
		prop.setProperty("time",count+"");
		FileOutputStream fos = new FileOutputStream(file);
		prop.store(fos,"");
		fos.close();
		fis.close();
	}
}

总结:思想是定义一个计数器,每运行一次,计数器加1,然后写到配置文件中,因为写入文件的计数器的值不会改变,当你读到五次时就不让读了

注: Properties类能够读取配置文件方便以后操作开发需要重点掌握

三、其他IO流相关类

PrintStream():

字节打印流构造函数可以接受的参数类型:File对象、字符串路径

字节输出流Outputstream

PrintReader();字符打印流 可以接受的参数类型:file对象,字符串路径字节输出流,字符输出流。

合并流:SequenceInputStream:

操作对象的流:ObjectInputStream   ObjectOutputStream

对象的持久化存储;注意事项:

1、 把对象传入并且写到文件中。

2、 对象必须实现Serializable接口

3、 如果想改变类中的内容,在经过ObjectInputStream读时会出现异常,因为当你改变类时与原来的类的序列号不对应了,解决这个问题可以自定义一个固定的序列号,

4、 静态的不能被序列化。

5、 如果不想被序列化,加上transient

管道流:PipedInputStream  PipeOutputStream

RandomAccessFile 随机访问文件的读取和写入

1、 只能操作文件

2、  writeIn();写入四个字节

3、 构造函数中要传入模式

4、 可以调整指针来取出想要的seek(8)

5、 SkipBtes();跳过多少个字节。取下一个

6、 可以随机添加

7、 如果模式为只读r,不会创建文件,回去读取一个已存在的文件,如果为rw模式,文件如果没有会创建

一、 操作对象的流--------àObjectOutputStream ObjectInputStream

主要的特点是它可以将对象存入文件中。

管道流 ------àpipedInputStream  pipedOutputStream

不建议使用单线程,因为容易发生死锁,

 pipedInputStream  in=new pipedInputStream();

 pipedOutputStream out=new pipedOutputStream();

 in.connect(out) ;----à把两个流联系起来

三、 RandomAccessFile内部封装了一个数组,可以通过getFilePointer()获取指针的位置,可以通过seek改变指针的位置。

注意:该类只能操作文件

在操作文件时时有模式的,例如r,rw

 如果你写入的模式是r,则表示只能进行读操作

 如果你写入的是rw,则表示既可以进行读操作,又可以进行写操作

RandomAccessFile类可以在任意位置进行读写,因为有skipBytes( )方法,它可以跳过指定的字节数。Seek()可以调整指针的位置

DataInputStream与DataOutputStream

用于操作基本数据类型的数据的流对象。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值