范例1、
File f=new File("D:\\File\\NewFile"); if(!f.exists())//判断文件是否存在,若不存在 { try {//创建一个新的路径该文件 f.createNewFile(); System.out.println("创建成功"); } catch (IOException e) {//若路径不存在 获取异常 e.printStackTrace(); } }
如果路径错误,获取异常,因此要用createNewFile必须写try catch语句
java.io.IOException: 系统找不到指定的路径。 at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(Unknown Source) at org.file.FileDemo.main(FileDemo.java:18)
范例2、
System.out.println(f.delete());//返回true 如果是文件夹,且有文件,返回false 删除失败
f.mkdir();//创建文件夹
范例3、
查找文件夹下的某种后缀名的文件 //只能查找一层 文件夹中的文件夹中的文件忽略不会查找
//过滤查找 File f=new File("D:\\File"); File[] files=f.listFiles((filename)->filename.getName().endsWith(".txt"));//运用labda表达式实现filename接口 endWith 判断后缀是某种类型 for (File file : files) { System.out.println(file.getName()); }
范例4、
运用递归查找文件夹下所有的子文件中某种类型的文件路径
public class RecursiveSerch { public static void main(String[] args) { // TODO Auto-generated method stub FindFile(new File("D:\\File"), ".jpg"); } public static void FindFile(File file,String str) { if(file==null)return;//如果文件不存在 if(file.isDirectory())//判断是否为文件夹 { File[] files=file.listFiles();//列出文件夹下的所有文件 if(files!=null)//如果不是空文件夹 { for (File f : files) {//foreach循环 FindFile(f,str);//递归查看子文件夹下的文件 } } } else { if(file.getName().toLowerCase().endsWith(str))//获取文件名 并且将文件名改成小写 并判断后缀名是否为str类型 System.out.println(file.getAbsolutePath());//获取文件的绝对路径 } } }
字节流
------从程序中写文件叫输出流
-----从文件中读取到程序叫输入流
输出流
public static void out() { File file=new File("D:\\File\\File.txt"); try { OutputStream out=new FileOutputStream(file);//OutputStream out=new FileOutputStream(file,true); //代表覆盖写入 String str="小乔流水哗啦啦"; out.write(str.getBytes());//输出流读取的是字符 因此要getbyte out.close();//关闭输出流 System.out.println("写入成功!"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
输入流
public static void in() { File file=new File("D:\\File\\File.txt"); try { InputStream in=new FileInputStream(file); byte[] bt=new byte[1024];//表示每次读取的字符长度 StringBuilder stb=new StringBuilder(); int len=-1; //把数据读取到数组中,并返回读取的字节数当不等于-1时,代表读取到了数据,如果等于数据,表示文件已经读完 if((len=in.read(bt))!=-1) { stb.append(new String(bt)); } in.close();//关闭输入流 System.out.println(stb); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }