黑马程序员技术交流社区
标题:
IO流--File
[打印本页]
作者:
洛奇亚
时间:
2015-9-22 22:24
标题:
IO流--File
File
1、可以将一个已存在的或者不存在的文件或者目录封装成file对象
package cn.itcast.io.p2.file.demo;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
constructorDemo();
}
public static void constructorDemo() {
//可以将一个已存在的或者不存在的文件或者目录封装成file对象。
File file =new File("c:\\a.txt");
File f2=new File("c:\\","a.txt");
File f=new File("c:\\");
File f3= new File(f,"a.txt");
File f4= new File("c:"+File.separator+"abc"+File.separator+"a.txt");//File.separator表示“\”
}
}
2、获取、创建与删除、判断、重命名
package cn.itcast.io.p2.file.demo;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
public class FileMethodDemo {
public static void main(String[] args) throws IOException {
/*
* File对象的常见方法:
*
* 1,获取: 1.1 获取文件名称 1.2获取文件路径 1.3 获取文件大小 1.4获取文件修改时间
*
* 2,创建与删除: boolean
*
* 3,判断: exists()
*
* 4,重命名: renameTo()
*/
getDemo5();
}
public static void getDemo5() {
File file =new File("d:\\");
file.getFreeSpace();//获取空闲空间
file.getTotalSpace();//获取总容量
file.getUsableSpace();//返回分区上可用于虚拟机的可用空间
/* File[] files = File.listRoots();
for(File file :files){
System.out.println(file);
}*/
}
// 重命名
public static void getDemo4() {
File f1 = new File("c:\\2.mp3");
File f2 = new File("d:\\aa.mp3");// 剪切
boolean b = f1.renameTo(f2);
System.out.println("b=" + b);
}
// 判断
public static void getDemo3() {
File f = new File("a.txt");
f.mkdir();
/*
* boolean b= f.exists();//判断
*
* System.out.println("b="+b);
*/
// 若文件不存在,则全为false
System.out.println(f.isFile());// 是否是文件
System.out.println(f.isDirectory());// 是否是目录
}
// 创建与删除
public static void getDemo2() throws IOException {
File dir = new File("abc\\q\\e");
/*
* boolean d=dir.mkdir();//make directory创建文件 ,创建单级目录
*
* System.out.println("d="+d);
*/
// System.out.println(dir.mkdirs());//创建多级目录.delete方法删除时,删除最底层目录。
System.out.println(dir.delete());// 删除 ,windows的删除是从里往外删的。
File file = new File("file.txt");
/*
* 和输出流不一样,如果文件不存在,则创建,如果文件存在则不创建。
*/
/*
* boolean b=file.createNewFile();
*
* System.out.println("b="+b);
*/
boolean c = file.delete();
// file.deleteOnExit();//退出时删除
System.out.println("c=" + c);
}
public static void getDemo1() {
File file = new File("a.txt");
String name = file.getName();
String absPath = file.getAbsolutePath();// 绝对路径
String path = file.getPath();// 目录文件;写什么拿什么
long len = file.length();
long time = file.lastModified();
Date date = new Date(time);
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,
DateFormat.LONG);
String str_time = dateFormat.format(date);
System.out.println("name:" + name);
System.out.println("absPath:" + absPath);
System.out.println("path:" + path);
System.out.println("length:" + len);
System.out.println("time:" + time);
System.out.println("str_time:" + str_time);
}
}
3、获取当前目录下的文件以及文件名称,包含隐藏文件、获取非隐形文件、获取指定后缀名的文件
package cn.itcast.io.p2.file.demo;
import java.io.File;
public class FileListDemo {
public static void main(String[] args) {
ListDemo_2();
}
// 获取非隐形文件
public static void ListDemo_3() {
File dir = new File("c:\\");
File[] files = dir.listFiles(new FilterByHidden());
for (File file : files) {
System.out.println(file);
}
}
// 获取指定后缀名的文件
public static void ListDemo_2() {
File dir = new File("c:\\");
// 过滤指定后缀名
String[] names = dir.list(new SuffixFilter(".java"));
// String[] names = dir.list(new FilterByJava());
for (String name : names) {
System.out.println(name);
}
}
public static void ListDemo() {
File file = new File("c:\\");
/*
* 获取当前目录下的文件以及文件名称,包含隐藏文件 调用list方法中的file对象中封装的必须是目录。 否则会发生空指针异常。
* 若果访问的是系统目录也会发生空指针异常。
*
* 如果目录存在但是没有内容,会返回一个数组,但是长度为0。
*/
String[] names = file.list();
System.out.println(names.length);
for (String name : names) {
System.out.println(name);
}
}
}
去除隐形文件
package cn.itcast.io.p2.file.demo;
import java.io.File;
import java.io.FileFilter;
public class FilterByHidden implements FileFilter {
@Override
public boolean accept(File pathname) {
return !pathname.isHidden();
}
}
获取后缀名为.java的文件
package cn.itcast.io.p2.file.demo;
import java.io.File;
import java.io.FilenameFilter;
public class FilterByJava implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
获取指定后缀名的文件
package cn.itcast.io.p2.file.demo;
import java.io.File;
import java.io.FilenameFilter;
public class SuffixFilter implements FilenameFilter {
private String suffix;
public SuffixFilter(String suffix) {
super();
this.suffix = suffix;
}
public boolean accept(File dir, String name) {
return name.endsWith(suffix);
}
}
4、对指定的目录进行所有内容的列出(包含子目录中的内容)
package cn.itcast.io.p1.file.test;
import java.io.File;
/*
* 需求:对指定的目录进行所有内容的列出(包含子目录中的内容)
*
* 也可以理解为深度遍历。
*
*/
public class FileTest {
public static void main(String[] args) {
File dir = new File("e:\\demodir");
listAll(dir,0);
}
public static void listAll(File dir,int level) {
System.out.println(getSpace(level)+dir.getName());//dir.getAbsolutePath()获取绝对路径
level++;
//获取指定目录下当前的所有文件夹或者文件对象
File[] file = dir.listFiles();
for(File files :file){
if(files.isDirectory()){
listAll(files,level);
}
else
System.out.println(getSpace(level)+files.getName());
}
/* for(int x=0;x<file.length;x++){
System.out.println(file[x].getAbsolutePath());
}*/
}
//目录层次分级效果
public static String getSpace(int level) {
StringBuilder sb=new StringBuilder();
sb.append("|---");
for(int i=0;i<level;i++){
sb.insert(0, "| ");
}
return sb.toString();
}
}
5、删除一个带内容的目录。
package cn.itcast.io.p1.file.test;
import java.io.File;
public class RemoveDirTest {
/*
* 删除一个带内容的目录。
*
* 原理:必须要从最里面往外删除。
*/
public static void main(String[] args) {
File dir = new File("e:\\demodir");
removeDir(dir);
}
public static void removeDir(File dir) {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
removeDir(file);
} else {
System.out.println(file + ":" + file.delete());//删除文件
}
}
System.out.println(dir+":"+dir.delete());//删除文件夹
}
}
6、产生一百个随机的素数,并将其存储到指定文档中。
package cn.itcast.io.p1.file.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class TestRandom {
public static void main(String[] args) {
new TestRandom();
}
public TestRandom() {
int i = 0;
int k = 0;
ArrayList<Integer> shou = new ArrayList<Integer>();
int[] zhengShu = new int[100];
System.out.print("产生的随机数是:");// 测试代码
for (i = 0; i < zhengShu.length; i++) {
zhengShu[i] = (int) (Math.random() * 1000);// 给数组赋值
System.out.print(zhengShu[i] + " ");// 测试代码
}
System.out.println();// 换行
for (int j = 0; j < zhengShu.length; j++) {
for (k = 2; k < zhengShu[j]; k++) {// 判断能不能被整除
if ((zhengShu[j] % k) == 0) {
break;
}
}
if (k == zhengShu[j])// 如果以上都不是,就是k与zhengShu[j]
shou.add(zhengShu[j]);// 把这个数加到shou数组中
}
for (int q = 0; q < shou.size(); q++) {
System.out.print(shou.get(q) + " ");// 打印素数,测试代码
}
System.out.println("\n");
File file = new File("素数.txt");
try {
FileWriter ps = new FileWriter(file, true);
for (int j = 0; j < shou.size(); j++) {
ps.write(shou.get(j) + " " + "\n");// 把素数打印到文本文档里面
}
ps.flush();
ps.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
作者:
xuxu5112
时间:
2015-9-22 23:06
好多好全 学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2