-
File.separator 設(shè)置分隔符
查看全部 -
RandomAccessFile是Java提供訪問文件內(nèi)容的類,既可以讀文件也可以寫文件
RandomAccessFile支持隨機訪問文件,可以訪問文件的任意位置
java文件模型:
在硬盤上的文件是以byte存儲的,是數(shù)據(jù)的集合
打開文件
有兩種模式:rw(讀寫) 、r(只讀)
RandomAccessFile raf = new RandomAccessFile(file,打開模式);
文件指針,打開文件時指針在文件的開頭pointer = 0
寫方法
raf.write(int)-->只寫一個字節(jié)(后8位),同時指針指向下一個位置,準(zhǔn)備再次寫入
讀方式
int b =raf.read()-->一次讀一個字節(jié)
文件讀完后一定要關(guān)閉(Oracle官方說明)
查看全部 -
package?com.xin.file; import?java.io.File; import?java.io.IOException; /**? ?*?File類:顯示文件或者目錄的信息(文件名或者目錄名、文件大小)? ?*?通過java.io.file類操作硬盤上的文件或目錄,不能訪問文件內(nèi)容? ?*?@author?57602? *?*/ public?class?demo?{? ????public?static?void?main(String[]?args)?throws?IOException?{?? ????//創(chuàng)建一個文件對象?? ????File?file?=?new?File("F:\\學(xué)習(xí)視頻\\java基礎(chǔ)");?? ????//用File.separator設(shè)置分割符,不論在什么操作系統(tǒng)下都能識別 ????//File?file?=?new?File("F:"+File.separator+"學(xué)習(xí)視頻"+File.separator+"java基礎(chǔ)"); ????//判斷目錄是否存在?? ????System.out.println(file.exists());???? ????File?file1?=?new?File("F:\\學(xué)習(xí)視頻\\java基礎(chǔ)\\imooc");?? ????System.out.println(file1.exists());?? ????//若不存在則創(chuàng)建該目錄?? ????if(!file1.exists())?{?? ????//創(chuàng)建一級目錄??? ????file1.mkdir();??? ????//file1.mkdirs();創(chuàng)建多級目錄?? ????}else?{??? ????//若存在則刪除該目錄??? ????file1.delete();?? ????}???? ????//創(chuàng)建文件?? ????//File?file2?=?new?File("F:\\學(xué)習(xí)視頻\\java基礎(chǔ)\\日記.txt");?? ????File?file2?=?new?File("F:\\學(xué)習(xí)視頻\\java基礎(chǔ)",?"日記.txt");?? ????System.out.println(file2.isDirectory());?? ????if(!file2.exists())?{ ???????file2.createNewFile(); ????}else?{ ???????file2.delete();?? ????}?? ????//常用File對象的API???? ????System.out.println(file2); ????//獲取目錄?? ????System.out.println(file2.getAbsolutePath()); ????//獲取文件的絕對路徑?? ????System.out.println(file2.getParent()); ????//獲取文件的父目錄?? ????System.out.println(file2.getName();//獲取文件名?? ????System.out.println(file2.getParentFile());//獲取父目錄 ????System.out.println(file2.getParentFile().getAbsolutePath());//獲取父目錄的絕對路徑 ????} }
查看全部 -
文件的編碼
GBK:中文占2個字節(jié),英文占1個字節(jié)
UTF-8:中文占3個字節(jié),英文占1個字節(jié)
//將一個字符串轉(zhuǎn)換成指定編碼的字節(jié)序列 byte[]?bytes?=?str.getBytes("編碼格式"); //將一個字符串轉(zhuǎn)換成字節(jié)序列時沒有指定編碼格式則默認是當(dāng)前項目的默認編碼格式 byte[]?bytes?=?str.getBytes();
java是雙字節(jié)編碼,其編碼格式是utf-16be
byte[]?bytes?=?str.getBytes("utf-16be");
?當(dāng)字節(jié)序列是某種編碼時,如果要把字節(jié)序列轉(zhuǎn)化成字符串,也需要通過指定編碼的方式轉(zhuǎn)化,否則會亂碼
String?str?=?new?String(bytes,"utf-16be");
文本文件就是字節(jié)序列,可以是任意編碼的字節(jié)序列,如歌在中文系統(tǒng)上直接創(chuàng)建文本文件,那么該文本文件只認識ansi編碼
查看全部 -
對子類對象進行反序列化操作時,如果其父類沒有實現(xiàn)序列化接口,那么其父類構(gòu)造函數(shù)會被調(diào)用,如果實現(xiàn)了序列化接口,反序列化時該父類可以直接從序列化時指定的用于存儲的文件里讀取數(shù)據(jù)
查看全部 -
一知半解,以后回來看
查看全部 -
將讀到的"字符"向"字符串"做轉(zhuǎn)換.
查看全部 -
奇跡出現(xiàn)!
控制臺直接打印出文本文件內(nèi)容.
當(dāng)然因為是"字符流"而不是"字節(jié)流"
查看全部 -
OutputStreamWriter 提供char流到byte流,按照編碼處理<br/>查看全部
-
InputStreamReader 完成byte流解析為char流<br/>查看全部
-
"文本是byte byte byte... 的數(shù)據(jù)序列"????這里我明白byte的意思了 意思是文件就是由一個個byte組成的 也就是八位的"數(shù)據(jù)"(這里還不敢說是字符)
文本文件是文本序列.
查看全部 -
緩沖方法中的flush 是必須的.
而且讀取和寫入流用完后都需要關(guān)閉.
查看全部 -
FileOutputStream????DataOutputStream????BufferedOutputStream 三個的對比
查看全部 -
writeChars 使用JAVA默認的UTF16BE編碼 寫成
查看全部 -
寫入流 最后加入 "flush()" 視頻中說: 對字節(jié)流 flush"可寫可不寫"
查看全部
舉報