黑马程序员 java基础之IO流(二)
File可以将已有的或者未出现的文件或者文件夹封装成一个对象;
File中的常见方法演示
1、创建
boolean createNewFile();会发生异常IOException.
在指定位置创建文件,如果文件存在则返回false
与输出流不同,输出流一旦建立对象,就会创建文件,如果存在则会覆盖;
static File createTempFile(String prefix, String suffix);可以创建一个临时文件
boolean mkdir();创建目录
boolean mkdir();创建多级目录
2、删除
boolean delete();删除未成功,返回false;
deleteOnExit(); 在程序退出时删除文件;
3、判断
boolean exists();判断文件是否存在;
isDirectory();在调用该方法时必须先调用上一方法;
isFile();在调用该方法时必须先调用上一方法;
isHidden();
isAbsolute();判断是否是绝对路径
4、获取
getName();
String getParent()该方法返回的是文件的绝对路径中的父目录,或是该文件所在的上一层目录,如果File对象中没指定绝对路径或者上一层目录, 返回null;
getPath();File对象中封装的是什么路径就获取什么路径;
File getAbsoluteFile()返回此抽象路径名的绝对路径名形式。
String getAbsolutePath() 返回此抽象路径名的绝对路径名形式。
renameTo(File f);改名
static File[] listRoots() 列出可用的文件系统根。
练习一:打印c盘文件下的目录
class FileTest
public static void main(String [] args){
File file = new File("C:\\");//将目录封装成对象,可以返回目录下的所有文件名;
String [] str = file.list();
for(String name:str){
System.out.println(name);
}
}
}
练习二:打印一个目录下所有的java文件
{
public static void main(String [] args){
File dir = new File("E:\\workspace\\notes\\");
String [] names = dir.list(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return name.endsWith(".java");
}
});
for(String name:names){
System.out.println(name);
}
}
}
练习三:打印出该目录下所有文件和文件夹,包括子文件夹,带层次class FileTest
public static void main(String [] args)
{
File dir = new File("E:\\workspace\\");
showDir(dir,0);
}
public static String getLevel(int level)
{
StringBuilder sb = new StringBuilder();
for(int i=0; i<level; i++)
{
sb.append(" ");
}
return sb.toString();
}
public static void showDir(File dir,int level)
{
System.out.println(getLevel(level)+ dir.getName());
File [] files = dir.listFiles();
level++;
for(int i=0; i<files.length; i++)
{
if(files[i].isDirectory())
showDir(files[i],level);
else
System.out.println(getLevel(level)+files[i]);
}
}
}
练习四:将指定目录下的所有.java文件生成一个目录列表
{
public static void main(String [] args)
{
//将目录封装成对象
File dir = new File("E:\\workspace\\");
//创建一个列表存放目录
List<File> list = new ArrayList<File>();
//调用自定义方法将文件目录写到列表
fileToList(dir,list);
//调用自定义方法将目录写到本地文本
writeToFile(list, "java.txt");
}
public static void fileToList(File dir,List<File> list)
{
//获取File对象
File [] files = dir.listFiles();
//高级循环遍历
for(File file : files){
if(file.isDirectory())
fileToList(file,list);
else{
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
public static void writeToFile(List<File> list, String txt){
BufferedWriter bw = null;
try
{
//输出流写入文本
bw = new BufferedWriter(new FileWriter(txt));
for(File f : list){
String path = f.getAbsolutePath();
bw.write(path);
bw.newLine();
bw.flush();
}
}
catch (IOException e)
{
System.out.println(e.toString());
}
finally{
try
{
if(bw == null)
bw.close();
}
catch (IOException e)
{
System.out.println(e.toString());
}
}
}
}