1 package com.vince; 2 3 import java.io.File; 4 5 /** 6 * 在指定的目录中查找文件 7 * @author vince 8 * @description 9 */ 10 public class FileDemo2 { 11 12 public static void main(String[] args) { 13 findFile(new File("C:\\Users\\vince\\Downloads"),".jpg"); 14 } 15 16 //查找文件的方法 17 private static void findFile(File target,String ext){ 18 if(target==null)return; 19 //如果文件是目录 20 if(target.isDirectory()){ 21 File[] files = target.listFiles(); 22 if(files!=null){ 23 for(File f: files){ 24 findFile(f,ext);//递归调用 25 } 26 } 27 }else{ 28 //此处表示File是一个文件 29 String name = target.getName().toLowerCase(); 30 //System.out.println(name); 31 if(name.endsWith(ext)){ 32 System.out.println(target.getAbsolutePath()); 33 } 34 } 35 } 36 37 }
1 package com.vince; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStream; 10 11 /** 12 * 字节输出输入流 13 * 输出流:超类 OutputStream,对文件的输出流使用子类FileOutputStream 14 * 输入流:超类InputStream,对文件的输入流使用子类FileInputStream 15 * 16 * 输入输出字节流操作原理,每次只会操作一个字节,(从文件中读取或写入 ) 17 * 字节操作流,默认每次执行写入操作会直接把数据写入文件 18 * @author vince 19 * @description 20 */ 21 public class ByteStreamDemo { 22 23 private static void in(){ 24 //0、确定目标文件 25 File file = new File("c:\\test\\vince.txt"); 26 //1、构建 一个文件输入流对象 27 try { 28 InputStream in = new FileInputStream(file); 29 30 byte[] bytes = new byte[10]; 31 StringBuilder buf = new StringBuilder(); 32 int len = -1;//表示每次读取的字节长度 33 //把数据读入到数组中,并返回读取的字节数,当不等-1时,表示读取到数据,等于-1表示文件已经读完 34 while((len = in.read(bytes))!=-1){ 35 //根据读取到的字节数组,再转换为字符串内容,添加到StringBilder中 36 buf.append(new String(bytes,0,len)); 37 } 38 //打印内容: 39 System.out.println(buf); 40 //关闭输入流 41 in.close(); 42 43 } catch (FileNotFoundException e) { 44 e.printStackTrace(); 45 } catch (IOException e) { 46 e.printStackTrace(); 47 } 48 } 49 50 private static void out(){ 51 //0、确定目标文件 52 File file = new File("c:\\test\\vince.txt"); 53 //1、构建一个文件输出流对象 54 try { 55 OutputStream out = new FileOutputStream(file,true); //append 为true表示追加内容 56 //2、输出的内容 57 String info = "小河流水哗啦啦\r\n";// \r\n表示换行 58 59 //String line = System.getProperty("line.separator");//获取换行符 60 //3、把内容写入到文件 61 out.write(info.getBytes()); 62 //4、关闭流 63 out.close(); 64 System.out.println("write success."); 65 66 } catch (FileNotFoundException e) { 67 e.printStackTrace(); 68 } catch (IOException e) { 69 e.printStackTrace(); 70 } 71 72 } 73 74 public static void main(String[] args) { 75 76 out(); 77 // in(); 78 } 79 80 }
1 package com.vince; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.OutputStream; 10 11 /** 12 * 文件的复制: 13 * 从一个输入流中读取数据,然后通过输出流写入目标位置 14 * 一边读一边写 15 * @author vince 16 * @description 17 */ 18 public class CopyFileDemo { 19 20 public static void main(String[] args) { 21 System.out.println("start copy..."); 22 copy("c:\\mm.jpg","C:\\test\\mm.jpg"); 23 System.out.println("copy success."); 24 } 25 26 private static void copy(String src,String target){ 27 File srcFile = new File(src); 28 File targetFile = new File(target); 29 InputStream in = null; 30 OutputStream out = null; 31 32 try { 33 in = new FileInputStream(srcFile); 34 out = new FileOutputStream(targetFile); 35 36 byte[] bytes = new byte[1024]; 37 int len = -1; 38 while((len=in.read(bytes))!=-1){ 39 out.write(bytes, 0, len); 40 } 41 42 } catch (FileNotFoundException e) { 43 e.printStackTrace(); 44 } catch (IOException e) { 45 e.printStackTrace(); 46 }finally{ 47 try { 48 if(in!=null)in.close(); 49 if(out!=null)out.close(); 50 } catch (IOException e) { 51 e.printStackTrace(); 52 } 53 } 54 } 55 56 }