黑马程序员-IO流 File类及Properties类

------- android培训java培训、期待与您交流! ----------
File类:用来将文件或者文件夹封装成对象,方便对文件和文件夹的属性信息进行操作。
File.separator:系统默认名称分隔符,跨平台。
File类常见方法:
1.创建:
boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流如果已经存在,会覆盖文件。

boolean mkdir():创建目录
2.删除:
boolean delete():删除失败返回false
void deleteOnExit():程序退出时删除指定文件。
3.判断
boolean exists():文件是否存在
boolean isDirectory():判断是否是目录
boolean isFile():判断是否是文件
boolean isHidden():是否是隐藏文件
boolean isAbsolute():测试抽象路径名是否是绝对路径
4.获取
getPath():
getAbsolutePath():
getParent():该方法返回的是绝对路径中的父目录,如果该路径是相对路径,则返回null
length():返回由此抽象路径名表示的文件的长度。
lastModified():最后一次文件修改时间
boolean reNameTo(File dest)重新命名此抽象路径名表示的文件,类似于剪切


递归:函数自身调用自身,称之为递归。
列出目录所有子目录及文件名称:
import java.io.*;
class  FileDemo
{
	public static void main(String[] args)throws IOException 
	{
		System.setOut(new PrintStream("list.txt"));
		File file = new File("g:\\java");
		getFiles(file,0);
	}
	public static void getFiles(File file,int floor)
	{
		System.out.println(getDirName(file,floor));
		floor++;
		File[] files = file.listFiles();
		for(File f : files)
		{
			if(f.isDirectory())
				getFiles(f,floor);
			else
				if(f.getName().endsWith(".java"))
					System.out.println(getDirName(f,floor));
		}
	}
	public static String getDirName(File f,int floor)
	{
		StringBuilder sb = new StringBuilder();
		sb.append("|--"+f.getName());
		for(int x=0;x<floor;x++)
		{
			sb.insert(0,"\t");
		}
		return sb.toString();
	}	
}

Properties是hashtable的子类,具备map集合的特点。存储的键值对都是字符串。
是集合和io技术相结合的集合容器。
可以用于键值对形式的配置文件。在加载数据时,需要是键值对形式。


load():从输入流中加载属性列表。
getProperty():获取
setProperty():设置
stringPropertyNames():返回一个set集合,存储此属性列表中的键集。


把键值对配置文件存储到Properties集合中:load()方法原理
BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
String line = null;
Properties prop = new Properties();
while((line=bufr.readLine())!=null)
{
	String[] str = ling.split("=");
	prop.setProperty(str[0],str[1]);
}

store(OutputStream os,String comment):把修改后的配置传递到配置文件。


模仿程序限制使用次数
import java.io.*;
import java.util.*;
class RunNumberDemo 
{
	public static void main(String[] args) throws IOException
	{
		File file = new File("number.ini");
		if(!file.exists())
			file.createNewFile();
		FileInputStream fis = new FileInputStream(file);
		Properties prop = new Properties();


		prop.load(fis);
		int number = 0;
		String value = prop.getProperty("time");
		if(value!=null)
		{
			number = Integer.parseInt(value);
			if(number>=5)
			{
				System.out.println("次数已到,请付款");
				return;
			}
		}
		number++;
		prop.setProperty("time",number+"");
		
		FileOutputStream fos = new FileOutputStream(file);
		prop.store(fos,"");
		
		fis.close();
		fos.close();
	}
}

打印流:该流提供了打印方法,可以将各种数据类型的数据都原样打印。
字节打印流: PrintStream
可以接受的参数类型:file对象,字符串路径,字节输出流
 
字符打印流: PrintWriter
可以接受的参数类型:file对象,字符串路径,字节输出流,字符输出流

当PrintWriter接受的是流对象时,后面可以加标记,如果标记为true,println,printf,format方法都可以自动刷新。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值