您的位置:首页 > 职场人生

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

2013-03-28 20:06 369 查看
-------
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方法都可以自动刷新。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐