File:文件类,操作文件夹,文件的属性信息。
创建对象举例“
File f1=new File("c:\\abc\\a.txt"); 字符串可以为变量
File f2 = new File("c:\\abc","a.xtx");指定目录名和文件名称
File d = new File("c:\\abc")
File f3 = new File(d,"a.txt"); 变量形式。
目录分隔符的跨平台形式
File f4 = new File("c:"+File.separator+"abc"+File.separator+"abc.txt" ;
File类常见方法:
1,创建
bollean creatNewFile(); //在指定位置创建文件,如果文件已经存在,则不创建。返回
false,和输出流不一样,输出流一建立就会创建文件。而且会覆盖。
mkdir();//创建目录,只能创建一级目录
mkdirs(); //可以创建多及目录
2,删除
boolean delate();
void dealteOnExit();//退出的时候删除。
3,判断
boolean canExcute();//是否可执行
canRead()
canWrite()
exists()
isFile()//判断文件是否是文件或目录时,必须先判断该文件对象封装的内容是否存在,通过exists().c
isHidden()
isDirectory()
isAbsolute()
int compareTo()
4,获取文件信息
String
getName()
getPath()
getParent()
long lastModified() ;最后修改时间
long lenth()
boolean renameTo(File)//移动文件
5,其它
列出盘符
File [] f =File.listRoots();
for(File p:f)
{
sop(p);
}
String [] list();//返回指定目录下文件或者文件夹名称
文件过滤器
String[] list(FilenameFilter f);//返回指定格式的文件名数组
File f1=new File("C:\\Users\\zx\\Desktop");
String name [] =f1.list(new FilenameFilter()
{
public boolean accept(File dir,String n)//dir 和name 是文件对象的目录和所有文件名
{
return n.endsWith(".o");
}
});
sop(name.length);
File[] listFiles();与上面相同,不过返回文件对象数组。也可以使用过滤器。
Properties是hashtable的子类
它具备map集合的特点,而且里面存储的键值对都是字符串,不需要泛型
是集合中io技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件,可以操作硬盘上上的键值对。
String getProperty(String key)//返回值
Object setProperty(String key,String value)//修改值/设置值
list(PrintStream out) //将属性列表指定到输出流。
load(Reader reader)//与流相结合
store(OutputStream,String 注释信息)
Set<String> stringPropertyNames()//返回键集
打印流PrintStream PrintWriter
字节打印流和字符打印流。
是Stream 和 Writer的子类。
PrintStream
构造函数可以接收的参数类型:
1,file对象 File
2,字符串路径 String
3,字符数出流 OutputStream
PrintWriter
可以接受各种流。
1,file对象 File
2,字符串路径 String,文件名路径。
3,字符数出流 OutputStream
4,多一个字符输出流 Writer
主要方法,除了OutputStream的方法外,还有
println方法,而且可以保证数据的原样性
合并流SequenceInputStream,直接举例应用
切割流Split,切割一个文件变成三个文件为例,没有新对象。
举例应用,列出所有目录:递归
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws IOException
{
File f= new File("e:\\百度云同步盘");
showDir(f);
}
public static void showDir(File dir)
{
File [] files = dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
{
showDir(files[x]);
}
else
{
sop(files[x]);
}
}
}
public static void sop(Object o)
{
System.out.println(o);
}
}
把所有.java文件目录存储到文件中
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws IOException
{
File f= new File("e:\\百度云同步盘");
FileWriter fw = new FileWriter("C:\\Users\\zx\\Desktop\\File.txt");
BufferedWriter bw = new BufferedWriter(fw);
showDir(f,bw);
bw.close();
sop("end");
}
public static void showDir(File dir,BufferedWriter bw) throws IOException
{
File [] files = dir.listFiles();
for(int x=0;x<files.length;x++)
{
if(files[x].isDirectory())
{
showDir(files[x],bw);
}
else
{
if(files[x].toString().endsWith(".java"))
{
bw.write(files[x].toString());
sop(files[x].toString());
bw.newLine();
bw.flush();
}
}
}
}
public static void sop(Object o)
{
System.out.println(o);
}
}
Properties 应用
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws IOException
{
Properties pop = new Properties();
pop.load(new FileReader("C:\\Users\\zx\\Desktop\\File.txt")); //从文件中加载信息
sop(pop);
pop.setProperty("zhanghaijun","88"); //修改map集合
pop.store(new FileOutputStream("C:\\Users\\zx\\Desktop\\File.txt"), null); //将新集合写入到文件中
sop(pop);
}
public static void sop(Object o)
{
System.out.println(o);
}
}
限制程序使用次数。
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws IOException
{
Properties pop = new Properties();
pop.load(new FileReader("C:\\Users\\zx\\Desktop\\File.txt"));
String s =pop.getProperty("times");
int a = Integer.parseInt(s);
if(a>=10)
sop("不可以用了");
else
{
sop("已经使用"+a+"次");
pop.setProperty("times", a+1+"");
pop.store(new FileOutputStream("C:\\Users\\zx\\Desktop\\File.txt"), null);
}
}
public static void sop(Object o)
{
System.out.println(o);
}
}
PrintWriter举例应用
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws IOException
{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(System.out ,true); //如果设置为true,则自动刷新。
String line = null;
while((line = buf.readLine())!=null)
{
out.println(line);
out.flush();
}
}
public static void sop(Object o)
{
System.out.println(o);
}
}
SequenceInputStream 合并流
举例应用
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws IOException
{
FileInputStream f1 = new FileInputStream("C:\\Users\\zx\\Desktop\\1.txt");
FileInputStream f2 = new FileInputStream("C:\\Users\\zx\\Desktop\\2.txt");
FileInputStream f3 = new FileInputStream("C:\\Users\\zx\\Desktop\\3.txt");
FileOutputStream f4 = new FileOutputStream("C:\\Users\\zx\\Desktop\\4.txt");
Vector<FileInputStream> v = new Vector<FileInputStream>();
v.add(f1);
v.add(f2);
v.add(f3);
Enumeration<FileInputStream> en = v.elements();
SequenceInputStream sis = new SequenceInputStream(en);
byte [] by =new byte [1024];
int len;
while((len=sis.read(by))!=-1)
{
f4.write(by,0,len);
f4.flush();
}
sis.close();
f4.close();
}
public static void sop(Object o)
{
System.out.println(o);
}
}