內容:流的分類,文件寫入(位元組輸出流),異常處理,獲取一個文件夾下的特定文件集合 位元組流的抽象基類:InputStream,OutputStream字元流的抽象基類:Reader,Writer由這四個類派生出來的子類名稱都是以父類名作為子類名的尾碼。如:InputStream的子類FileInput ...
內容:流的分類,文件寫入(位元組輸出流),異常處理,獲取一個文件夾下的特定文件集合
位元組流的抽象基類:InputStream,OutputStream
字元流的抽象基類:Reader,Writer
由這四個類派生出來的子類名稱都是以父類名作為子類名的尾碼。如:InputStream的子類FileInputStream,Reader的子類FileReader
###################################################
文件寫入,位元組輸出流
private static final String LINE_SEPARATOR = System.getProperty("line.separator"); //獲取系統換行符,用於換行 public static void main(String[] args) throws IOException { System.out.println(LINE_SEPARATOR); String s = "花"+LINE_SEPARATOR+"awegadjgaw"; File dir = new File("abc"); if(!dir.exists()){ dir.mkdir(); } FileOutputStream fos = new FileOutputStream("abc\\ai.txt",true); //true表示可以續寫 fos.write(s.getBytes()); //寫入信息 System.out.println("ok"); fos.close(); }
##########異常處理
public static void main(String[] args) { FileOutputStream fos = null; //在try外面聲明,在finally裡面才能關閉 try{ fos = new FileOutputStream("abc"+File.separator+"ai.txt"); fos.write("aiqing".getBytes()); } catch(IOException e){ } finally { if(fos != null){ //釋放資源前要判斷,是否為空 try{ fos.close(); } catch(IOException e){ throw new RuntimeException(e); } } } }
##########################################練習
獲取一個文件夾下的特定文件集合:使用到了過濾器
public static void main(String[] args) { File f = new File("f:"+File.separator+"eclipse_javaCode"+File.separator+ "day21"+File.separator+"day19"); // System.out.println(f); List<File> list = getList(f,".java"); for(File file:list){ System.out.println(file); } } private static List<File> getList(File dir, String string) { List<File> list = new ArrayList<File>(); FileFilter filter = new FileFilterByEnding(string); getFileList(dir,list,filter); return list; } private static void getFileList(File dir, List<File> list, FileFilter filter) { //獲取文件數組 File[] files = dir.listFiles(); //遍歷文件數組 for(File file:files){ if(file.isDirectory()){ getFileList(file, list, filter); } else{ if(filter.accept(file)){ list.add(file); } } } }含主函數
public class FileFilterByEnding implements FileFilter { private String suffix; public FileFilterByEnding(String suffix) { super(); this.suffix = suffix; } @Override public boolean accept(File pathname) { return pathname.getName().endsWith(suffix); } }過濾器類