java练气期(2)----java高级(File类与IO流)
生活随笔
收集整理的這篇文章主要介紹了
java练气期(2)----java高级(File类与IO流)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
什么是File類
即Java文件類以抽象的方式代表文件名和目錄路徑名。該類主要用于文件和目錄的創(chuàng)建、文件的查找和文件的刪除等。
File類常用方法
- delete()刪除此抽象路徑名表示的文件和目錄。
- equals()測試此抽象路徑名與給定對象是否相等。
- exists()測試此抽象路徑名表示的文件或目錄是否存在。
- getName()返回由此抽象路徑名表示的文件或目錄的名稱。
- isDirectory()測試此抽象路徑名表示的文件是否一個(gè)目錄
- isFile()測試此抽象路徑名表示的文件是否是標(biāo)準(zhǔn)文件。
- length()返回此抽象路徑名表示的文件長度。
- mkdir()創(chuàng)建此抽象路徑名指定的目錄。
File類的高級獲取功能:?
?
- * public String[] list():返回對象是一個(gè)字符串?dāng)?shù)組,當(dāng)前哪個(gè)一盤符下的所有的文件以及文件夾的字符串名稱數(shù)組?
- * public File[] listFiles():返回對象是一個(gè)File數(shù)組,當(dāng)前哪個(gè)盤下的所有的文件以及文件夾的File數(shù)組
?
實(shí)例一:遞歸輸出給定目錄里的所有文件,要求分級縮進(jìn)
//遞歸遍歷所有文件 public static void listFileTest(File file,int n) { //file指定目錄,n當(dāng)前級別if (file != null) {if (file.isDirectory()) {System.out.println(print(n++) + file.getName());File[] files = file.listFiles() ;for (File file2 : files) {listFileTest(file2,n);}}else {System.out.println(print(n) + file.getName());} }}//分級縮進(jìn)public static String print(int n) {StringBuffer s = new StringBuffer() ;s.append("|_") ;for(int i=0; i<n; i++) {s.append("__") ;}return s.toString();}實(shí)例二:批量修改文件名
/*** 批量修改文件名* @param dest*/public static void renameToTest(File dest) { //傳入需要操作的目錄File[] f = dest.listFiles() ; //返回目錄里所有文件的File對象for(int i=0 ;i < f.length; i++) {String[] s2 = f[i].getName().split("[.]") ; //根據(jù)‘.’分割文件名與后綴名//使用新的文件名與對應(yīng)的后綴名連接形成新的文件路徑String newPath = dest.getPath() + File.separatorChar + i + "." + s2[s2.length - 1] ;f[i].renameTo(new File(newPath)); //將文件名更改為新的文件名}}實(shí)例三:遞歸刪除非空目錄
public static void main(String[] args) {// TODO Auto-generated method stubFile file = new File("d:\\aaa") ;deleteDirectory(file);System.out.println("刪除成功");}public static void deleteDirectory(File f) {if (f.length() != 0) {if (f.isDirectory()) {for (File fi : f.listFiles()) {deleteDirectory(fi);}}}f.delete() ;}java中IO流的分類
其中,以Stream結(jié)尾的為字節(jié)流,以Writer或者Reader結(jié)尾的為字符流。所有的輸入流都是抽象類IuputStream(字節(jié)輸入流)或者抽象類Reader(字符輸入流)的子類,所有的輸出流都是抽象類OutputStream(字節(jié)輸出流)或者抽象類Writer(字符輸出流)的子類。字符流能實(shí)現(xiàn)的功能字節(jié)流都能實(shí)現(xiàn),反之不一定。如:圖片,視頻等二進(jìn)制文件,只能使用字節(jié)流讀寫。
package com.lkw.test;import java.io.*; import java.text.SimpleDateFormat;public class FileDemo {public static void main(String[] args) {}/*file*/public static void testFile(String path) {File file = new File(path);if(file.exists()) {if (file.isFile()) {System.out.println("文件大小" + file.length());System.out.println("是否能寫" + file.canWrite());System.out.println("是否能讀" + file.canRead());System.out.println("是否能運(yùn)行" + file.canExecute());//獲取最后的修改時(shí)間SimpleDateFormat sfm = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");//將日期轉(zhuǎn)換為要求格式String str = sfm.format(file.lastModified());} else if (file.isDirectory()) {//listFiles()方法返回當(dāng)前目錄下所有的文件和目錄的絕對路徑,返回的是file數(shù)組File [] f = file.listFiles();for(File i : f)System.out.println(i);}}else {System.out.println("文件不存在");if(path.contains(".")) {try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}else {//創(chuàng)建目錄file.mkdirs();}}}/*字節(jié)流讀*/public static void Input(String path ) throws IOException {FileInputStream fin = new FileInputStream(path);byte[] buf = new byte[1024];int iread = 0; //讀取長度while((iread = fin.read(buf)) != -1) { //將讀取到的字節(jié)流寫入bufSystem.out.println(new String(buf));System.out.println("****************我已讀" + iread + "***************");}fin.close();//關(guān)閉流}//字節(jié)流寫public static void Output(String path) throws IOException {FileOutputStream out = new FileOutputStream(path);String string = "lkw天下第一";out.write(string.getBytes());//將字符串轉(zhuǎn)換為字節(jié),寫入文件out.close();}public static void ReadAndWrite() throws IOException {FileInputStream fin = new FileInputStream("d:\\\\uft.txt");FileOutputStream fout = new FileOutputStream("d:\\\\www.txt");int iread;byte[] buf = new byte[200];//字節(jié)while((iread = fin.read(buf)) != -1) {fout.write(buf, 0, iread);System.out.println(new String(buf));}//字符流讀char[] x = new char[200];iread = 0;FileReader finx = new FileReader("d:\\\\uft.txt");while((iread = finx.read(x)) != -1){String str = new String(buf);System.out.println("[讀了"+iread+"]"+str.substring(0, iread));}fin.close();fout.close();} //字符流寫public static void testOut(String path,String str) throws IOException{FileWriter fr = new FileWriter(path,true);fr.write(str);fr.close();System.out.println("*******************輸出完畢!!!*********************");}}?
?
總結(jié)
以上是生活随笔為你收集整理的java练气期(2)----java高级(File类与IO流)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java练气期(1)----java高级
- 下一篇: java练气期(3)----java高级