------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一File类作用
1、用来将文件或者文件夹封装成对象 2、方便对文件与文件夹进行操作 3、File对象可以作为参数传递给流的构造函数。4、了解File类中的常用方法。
创建方式:
1创建一个当前路径的文件:File file=new File("a.txt");
2File d=new File(“c:\\abc");
File f=new File(d,"c.txt");
3File f2=new File("c\\abc\\c.txt");
二方法:
createNewFile();在指定路径创建文件,如果文件已经存在,则不创建,返回false,这个跟IO中输出流不同,文件不再输出流会创建,在的话就覆盖。在创建文件时要先判断文件是否存在,不存在则创建。
mkdir():创建一级文件夹
mkdirs():创建多级文件夹
调用该类的一个方法createNewFile(),但是在实际操作中需要注意一些事项,如判断文件是否存在,以及如何向新建文件中写入数据等。
2删除
delete():删除失败返回false,文件正在使用删除不了也返回false,在Windows中,删除目录的话里面如果还有文件要先删除掉里面的再删除外面的。系统中如果有隐藏文件文件夹也会被删除,所以可以在删除前可以进行isHidden判断。但是在进行删除整个文件夹的时候里面隐藏的文件文件夹不删除,外面的文件夹是删不了的,这个要注意。
void deleteOnExit():程序退出时删除文件
3判断
exists():判断文件是否存在
isFile()
isDirectory()
isHidden()
isAbsolute()
4获取信息
list() 列出目录下所有文件和文件夹包括隐藏的,以String[]数组返回
listFiles() 列出目录下所有文件和文件夹包括隐藏的,以File[]数组返回
list(FilenameFilter)以过滤器的形式对列出来的文件进行过滤,以String[]数组返回
listFiles(FilenameFilter)以过滤器的形式对列出来的文件进行过滤,以File[]数组返回
getName()
getPahth()
getAbsoluteFile()//获取绝对路径封装成文件对象
getAbsolutPath()//获取绝对路径
getParent()
lastModified()
length()
getParent()//该方法返回的是绝对路径中的父目录,如果获取的是相对路径,返回null.
//如果相对路径中有一级目录,那么该目录就是返回结果
renameTo()
三代码练习
练习1:File对象的建立及简单方法
<span style="font-family:SimSun;font-size:14px;">public static void main(String[] arg)
{
File file1=new File("d:"+File.separator+"abc");
File file2=new File(file1,"ac.txt");
File file3=new File("am.txt");
System.out.println(file1);
System.out.println(file2);
System.out.println(file3);
try
{
System.out.println(file3.createNewFile());
}
catch (IOException e)
{
}
System.out.println(file1.mkdir());
System.out.println(file2.getName());
System.out.println(file2.getPath());
System.out.println(file2.getParent());</span>
2获取系统目录
<span style="font-family:SimSun;font-size:14px;">public static void main(String[] arg)
{
/*File[] files=File.listRoots();
for (File f: files)
{
System.out.println(f);
}
*/
File file1=new File("c://");
String[] arr=file1.list();
for (String s:arr )
{
System.out.println(s);
}</span>
3.练习过滤指定目录的文件:保留.bmp文件
<span style="font-family:SimSun;font-size:14px;">public static void main(String[] arg)
{
File f2=new File("d://java//day20");
boolean boo1=f2.exists();
boolean boo2=f2.isDirectory();
if (boo1==false|| boo2==false)
{
throw new RuntimeException("该文件不存在");
}
File[] acc=f2.listFiles(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
return name.endsWith(".java");
}
});
for (File b:acc )
{
sop(b);
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}</span>
4列出指定文件的文件,目录及子目录
<span style="font-family:SimSun;font-size:14px;">public static void main(String[] arg)
{
File f2=new File("d://java");
run(f2,0);
}
public static String level1(int count)
{
StringBuilder sb=new StringBuilder();
for (int x=0;x<=count ;x++ )
{
sb.append("|....");
}
return sb.toString();
}
public static void run(File f,int count)
{
System.out.println(level1(count)+f.getName());
File[] arr=f.listFiles();
count++;
for (int x=0;x<arr.length ;x++ )
{
if (arr[x].isDirectory())
{
run(arr[x],count);
}
else
System.out.println(level1(count)+arr[x]);
}
}</span>
5递归练习。求1到100的和
<span style="font-family:SimSun;font-size:14px;">public static void main(String[] arg)
{
System.out.println(diGui(100));
}
public static int diGui(int n)
{
if (n==1)
{
return 1;
}
int sum=n+diGui(n-1);
return sum;</span>
6删除一个带内容的目录
<span style="font-family:SimSun;font-size:14px;">public static void main(String[] args)
{
File f2=new File("d://xianjian1");
delete1(f2);
}
public static void delete1(File f2)
{
File[] arr=f2.listFiles();
for (int x=0; x<arr.length; x++)
{
if (arr[x].isDirectory())
{
delete1(arr[x]);
}
else
System.out.println(arr[x].toString()+".,,....:"+arr[x].delete());
}
System.out.println("dir"+f2.delete());
}
</span>
7将一个指定目录下的java文件的绝对路径,存储到一个文本文件中,建立一个java文件列表文件
<span style="font-family:SimSun;font-size:14px;"> public static void main(String[] arg) throws IOException
{
File f2=new File("D://day18");
List<File> list=new ArrayList<File>();
bianLi(f2,list);
File f3=new File(f2,"wang.txt");
toText(list,f3.toString());
}
public static void toText(List<File> list,String acc) throws IOException
{
BufferedWriter sw=new BufferedWriter(new FileWriter(acc));
for (File a:list )
{
sw.write(a.getAbsolutePath());
sw.newLine();
sw.flush();
}
sw.close();
}
public static void bianLi(File f2,List<File> list)
{
File[] arr=f2.listFiles();
for (File e:arr )
{
if (e.isDirectory())
{
bianLi(e,list);
}
else
{
if (e.toString().endsWith(".java"))
{
list.add(e);
}
}
}
}</span>
8.想要将info.txt中的键值数据存到集合中进行操作
<span style="font-family:SimSun;font-size:14px;">Properties prop=new Properties();
FileInputStream fis=new FileInputStream("mmm.txt");
prop.load(fis);
prop.setProperty("zhangsan","88");
FileOutputStream fos =new FileOutputStream("mmm.txt");
prop.store(fos,"hah");
//prop.list(System.out);
fis.close();
fos.close();</span>
9编程:用于记录应用程序运行的次数
<span style="font-family:SimSun;font-size:14px;">File f=new File("ddd.txt");
Properties prop=new Properties();
if (!f.exists())
f.createNewFile();
FileInputStream fis=new FileInputStream(f);
prop.load(fis);
String value=prop.getProperty("time");
int count=0;
if (value!=null)
{
count=Integer.parseInt(value);
if (count>5)
{
System.out.println("该付钱了");
}
}
count++;
prop.setProperty("time",count+"");
FileOutputStream fos=new FileOutputStream(f);
prop.store(fos,"hah");
fis.close();
fos.close();
}</span>
10打印流的联系,把键盘输入变成大写后打印到屏幕上
<span style="font-family:SimSun;font-size:14px;">BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
PrintWriter ps=new PrintWriter(System.out);
String ss=null;
while ((ss=br.readLine())!=null)
{
/*if ("over".equals(ss))
{
break;
}
*/
ps.println(ss.toUpperCase());
ps.flush();
br.close();
ps.close();
}</span>
11利用sequenceInputStream.将多个文件合并
<span style="font-family:SimSun;font-size:14px;">Vector<FileInputStream > v=new Vector<FileInputStream>();
v.add(new FileInputStream("11.txt"));
v.add(new FileInputStream("22.txt"));
v.add(new FileInputStream("33.txt"));
v.add(new FileInputStream("44.txt"));
Enumeration<FileInputStream > e=v.elements();
SequenceInputStream sis=new SequenceInputStream(e);
FileOutputStream fos=new FileOutputStream("55.txt");
byte[] buf=new byte[1024];
int len=0;
while ((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
</span>