日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

文件上传获取file的全路径名_Java中的File类与I/O流

發布時間:2024/9/27 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件上传获取file的全路径名_Java中的File类与I/O流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
File類java.io.File類主要用于文件和目錄的創建、查找和刪除等操作,實際開發中必須用到。構造方法: File(String?pathname); File(String parent, String child); File(File parent, String child); File file1=new File("a.txt"); System.out.println(file1); File file2=new File("b.txt"); System.out.println(file2); File file3=new File("D:\\file\\c.txt"); System.out.println(file3); File file4=new File("D:\\file","d.txt"); System.out.println(file4); File parentDir=new File("D:\\file"); String child ="e.txt"; File file5=new File(parentDir,child); System.out.println(file5);

獲取方法:public?String?getName()??//返回由此抽象路徑名表示的文件或目錄的名稱public long length() //返回由此抽象路徑名表示的文件的長度public?String?getPath() //將此抽象路徑名轉換為一個路徑名字符串public?String?getAbsolutePath()??//返回抽象路徑名的絕對路徑名字符串public?String?getParent()??//返回此抽象路徑名的父路徑名的路徑名字符串,如果此路徑名沒有指定父目錄,則返回?nullpublic?File?getParentFile()??//返回此抽象路徑名的父路徑名的抽象路徑名,如果此路徑名沒有指定父目錄,則返回?null String name1 = file1.getName(); long length1 = file1.length(); String path1 = file1.getPath(); String absolutePath1 = file1.getAbsolutePath(); String parent1 = file1.getParent(); File parentFile1 = file1.getParentFile(); System.out.println("名稱:"+name1+" 文件長度:"+length1+" 路徑名字符串:"+path1+" 絕對路徑:" +absolutePath1+" 父目錄:"+parent1+" 父抽象路徑"+parentFile1); String name2 = file2.getName(); long length2 = file2.length(); String path2 = file2.getPath(); String absolutePath2 = file2.getAbsolutePath(); String parent2 = file2.getParent(); File parentFile2 = file2.getParentFile(); System.out.println("名稱:"+name2+" 文件長度:"+length2+" 路徑名字符串:"+path2+" 絕對路徑:" +absolutePath2+" 父目錄:"+parent2+" 父抽象路徑"+parentFile2); String name3 = file3.getName(); long length3 = file3.length(); String path3 = file3.getPath(); String absolutePath3 = file3.getAbsolutePath(); String parent3 = file3.getParent(); File parentFile3 = file3.getParentFile(); System.out.println("名稱:"+name3+" 文件長度:"+length3+" 路徑名字符串:"+path3+" 絕對路徑:" +absolutePath3+" 父目錄:"+parent3+" 父抽象路徑"+parentFile3); String name4 = file4.getName(); long length4 = file4.length(); String path4 = file4.getPath(); String absolutePath4 = file4.getAbsolutePath(); String parent4 = file4.getParent(); File parentFile4 = file4.getParentFile(); System.out.println("名稱:"+name4+" 文件長度:"+length4+" 路徑名字符串:"+path4+" 絕對路徑:" +absolutePath4+" 父目錄:"+parent4+" 父抽象路徑"+parentFile4); String name5 = file5.getName(); long length5 = file5.length(); String path5 = file5.getPath(); String absolutePath5 = file5.getAbsolutePath(); String parent5 = file5.getParent(); File parentFile5 = file5.getParentFile(); System.out.println("名稱:"+name5+" 文件長度:"+length5+" 路徑名字符串:"+path5+" 絕對路徑:"????????????????+absolutePath5+"??父目錄:"+parent5+"??父抽象路徑"+parentFile5);

判斷方法:

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流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。