文件上传获取file的全路径名_Java中的File类与I/O流
判斷方法:
public?boolean?exists()??//測試此抽象路徑名表示的文件或目錄是否存在public?boolean?isDirectory()??//測試此抽象路徑名表示的文件是否是一個目錄 public?boolean?isFile()??//測試此抽象路徑名表示的文件是否是一個標準文件 boolean f1 = file1.exists(); System.out.println(f1); boolean f2= file2.exists(); System.out.println(f2); boolean f3 = file3.exists(); System.out.println(f3); boolean f4 = file3.exists(); System.out.println(f3); boolean f5 = file1.exists(); System.out.println(f5);創建方法:
public?boolean?createNewFile()?throws?IOException??//當且僅當不存在具有此抽象路徑名指定的名稱的文件時, //原子地創建由此抽象路徑名指定的一個新的空文件public boolean mkdir() //創建此抽象路徑名指定的目錄public boolean mkdirs() //創建此抽象路徑名指定的目錄,包括創建必需但不存在的父目錄 boolean newFile1 = file1.createNewFile(); System.out.println(newFile1); boolean newFile2 = file2.createNewFile(); System.out.println(newFile2); boolean newFile3 = file3.createNewFile(); System.out.println(newFile3);file1和file2指定的文件a.txt和b.txt已經存在,所以不再創建,而file3指定的c.txt不存在,因此會在目錄下創建并返回true。 File dir1=new File("D:\\file\\newDir"); boolean b1 = dir1.mkdir(); System.out.println(b1); File dirs=new File("D:\\file\\newDir1\\newDir2"); boolean b2 = dirs.mkdirs(); System.out.println(b2);刪除方法:
public boolean delete(); System.out.println(file1.delete()); System.out.println(dir1.delete()); System.out.println(dirs.delete());? ? ? 在newDir2的同級目錄下新建了一個aaa.txt,刪除dirs只刪除了newDir2文件夾;如果把aaa.txt放到newDir2文件夾下,則不能刪除,即目錄必須為空才能刪除。
遍歷:
public?String[]?list()??//返回由此抽象路徑名所表示的目錄中的文件和目錄的名稱所組成字符串數組public?File[]?listFiles()??//返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名所表示目錄中的文件 String[] list = dir1.list(); for (String s : list) { System.out.println(s); } System.out.println("======================="); File[] files = dirs.listFiles(); for (File file : files) { System.out.println(file); }打印多級目錄:
public static void printDirs(File dirs){ File[] files = dirs.listFiles(); for (File file : files) { if(file.isFile()){ System.out.println("文件名:"+file.getAbsolutePath()); }else { System.out.println("目錄名:"+file.getAbsolutePath()); printDirs(file); } } }文件搜索:
找出java文件
public static void printDirs2(File dirs) { File[] files = dirs.listFiles(); for (File file : files) { if (file.isFile()) { if(file.getName().endsWith(".java")){ System.out.println("文件名:"+file.getAbsolutePath()); } } else { printDirs2(file); } } }I/O流
開發中主要用到字符流和字節流,因此主要介紹這兩種流,其他幾種了解即可。字節流
字節輸入流(InputStream)
abstract?int?read()? //從輸入流讀取數據的下一個字節?int?read(byte[]?b)??//從輸入流讀取一些字節數,并將它們存儲到緩沖區?b??void?close()??//關閉此輸入流并釋放與流相關聯的任何系統資源??InputStream抽象類是字節輸入流的超類,讀取字節信息到內存中。FileInputStream類
構造方法:
File file=new File("a.txt"); FileInputStream fis=new FileInputStream(file); FileInputStream fis1=new FileInputStream("b.txt");讀取字節數據
read():每次讀取一個字節的數據,提升為int類型,讀取到文件末尾返回-1。
FileInputStream fis=new FileInputStream("b.txt"); int b; while ((b=fis.read())!=-1){ System.out.println((char)b); } fis.close();read(byte[] b):每次讀取b長度個字節到數組中,返回讀取到的有效字節個數,讀到末尾時返回-1。
FileInputStream fis=new FileInputStream("b.txt"); int len; byte[] b=new byte[3]; while ((len=fis.read(b))!=-1){ System.out.println(new String(b,0,len)); } fis.close(); }字節輸出流(OutputStream)
void close() 關閉此輸出流并釋放與此流相關聯的任何系統資源。void flush() 刷新此輸出流并強制任何緩沖的輸出字節被寫出。void write(byte[] b) 將 b.length字節從指定的字節數組寫入此輸出流。void write(byte[] b, int off, int len) 從指定的字節數組寫入 len個字節,從偏移 off開始輸出到此輸出流。abstract void write(int b) 將指定的字節寫入此輸出流。??字節輸出流OutputStream抽象類是字節輸出流的超類,將指定的字節信息寫出到目的地。FileOutputStream類構造方法: File file=new File("a.txt"); FileOutputStream fos=new FileOutputStream(file); FileOutputStream fos1=new FileOutputStream("b.txt");write(intb):每次寫出一個字節數據。 FileOutputStream fos=new FileOutputStream("a.txt"); fos.write(97); fos.write(98); fos.write(99); fos.close();write(byte[] b):每次寫出數組中的數據。 FileOutputStream fos=new FileOutputStream("a.txt"); byte[] b="南理工真牛皮".getBytes(); fos.write(b); fos.close();write(byte[] b, int off, int len):每次寫出指定長度數據。 FileOutputStream fos=new FileOutputStream("a.txt"); byte[] b="123456abcdefg".getBytes(); fos.write(b,2,3);//3,4,5 fos.close();追加續寫:在構造方法中加入true參數。
FileOutputStream fos=new FileOutputStream("a.txt",true); byte[] b="123456abcdefg".getBytes(); fos.write(b,2,3);//3,4,5 fos.close();寫換行\r\n FileOutputStream fos=new FileOutputStream("a.txt",true); byte[] b="123456abcdefg".getBytes(); fos.write(b,2,3);//3,4,5 fos.write("\r\n".getBytes()); fos.write(b,3,3);//4,5,6 fos.close();字節流練習:復制圖片 //指定數據源,讀到內存中 FileInputStream fis=new FileInputStream("D:\\file\\321.jpg");????????//指定目的地,從內存寫出到目的地 FileOutputStream fos=new FileOutputStream("D:\\file\\zhulin.jpg"); int len; byte[] b=new byte[1024]; while ((len=fis.read(b))!=-1){ fos.write(b,0,len); }????????//流的關閉原則,后開先關 fos.close(); fis.close();字符流一個中文字符在GBK編碼下占2個字節,在UTF-8編碼下占3個字節,Windows系統默認GBK,IDEA默認UTF-8,因此用字節流讀取文件可能會亂碼,所以可以用字符流來處理文本文件。但是,字符流不能操作圖片、視頻等非文本文件。
字符輸入流(Reader)讀取字符文件到內存。
abstract void close() 關閉流并釋放與之相關聯的任何系統資源。int read() 讀一個字符 int read(char[] cbuf) 將字符讀入數組。abstract int read(char[] cbuf, int off, int len) 將字符讀入數組的一部分。??FileReader類構造方法: File file=new File("a.txt"); FileReader fr=new FileReader(file); FileReader fr=new FileReader("b.txt");intread() :讀取一個字符,自動提升為int類型。 FileReader fr=new FileReader("b.txt"); int b; while ((b=fr.read())!=-1){ System.out.println((char)b); } fr.close();intread(char[] cbuf):每次讀b長度的字符到數組中,返回讀到的有效字符個數。 int len; char[] cbuf=new char[3]; while ((len=fr.read(cbuf))!=-1) { System.out.println(new String(cbuf,0,len)); } fr.close();字符輸出流(Writer)將指定的字符信息寫出到目的地。
abstract void close() 關閉流,先刷新。 abstract void flush() 刷新流。 void write(int c) 寫一個字符 void write(char[] cbuf) 寫入一個字符數組。 void write(String str) 寫一個字符串 abstract void write(char[] cbuf, int off, int len) 寫入字符數組的一部分。??void write(String str, int off, int len) 寫一個字符串的一部分。??FileWriter類構造方法: File file =new File("a.txt"); FileWriter fw =new FileWriter(file); FileWriter fw=new FileWriter("b.txt");write(intc) :寫出一個字符。????????FileWriter?fw=new?FileWriter("b.txt"); fw.write(97); fw.write(98); fw.write('c'); fw.write('d'); fw.write(20000); fw.close();write(char[] cbuf):寫出字符數組。write(char[] cbuf, intoff, intlen):寫出字符數組的一部分。????????FileWriter?fw=new?FileWriter("b.txt");????????char[]?chars="我生氣了,氣死我了".toCharArray();????????fw.write(chars); //寫出字符數組????????fw.write("\r\n"); //換行????????fw.write(chars,2,3); //寫出字符數組的一部分 fw.close();write(Stringstr):寫出字符串。write(String str, int off, int len):寫出字符串的一部分。????????FileWriter?fw=new?FileWriter("b.txt");????????String?s="我生氣了呀哎呀呀";????????fw.write(s); //寫出字符串????????fw.write("\r\n");????????fw.write(s,2,3); //寫出字符串的一部分 fw.flush();flush:刷新緩沖區,流對象可以繼續使用。close:先刷新緩沖區,然后關閉流對象。此外,還有緩沖流、轉換流、序列化流、打印流。簡單介紹一下。
緩沖流緩沖流也叫高效流,對四個基本的字符字節流的增強。
字節緩沖流:BufferedInputStream,BufferedOutputStream字符緩沖流:BufferedReader,BufferedWriter原理創建流對象時會創建內置的默認大小的緩沖區數組,通過緩沖區讀寫,減少了IO次數,提高了讀寫效率。
轉換流可以指定編碼讀寫。
序列化流對象“流化”,序列化后的Java對象可以保存到本地文件系統,或者通過Socket傳輸到其他的服務器。主要應用在一些需要把數據存儲到磁盤或者數據緩存。
打印流平時用的print和println都來自PrintStream類。
總結
以上是生活随笔為你收集整理的文件上传获取file的全路径名_Java中的File类与I/O流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行卡转入余额宝要手续费吗
- 下一篇: 香港将探索发行数字港元 货币数字化