-
一、 /** * 批量讀取,對(duì)大文件而言效率高,也是我們最常用的讀文件的方式 * @param fileName * @throws IOException */ public static void printHexByByteArray(String fileName)throws IOException{ FileInputStream in = new FileInputStream(fileName); byte[] buf = new byte[8 * 1024]; /*從in中批量讀取字節(jié),放入到buf這個(gè)字節(jié)數(shù)組中, * 從第0個(gè)位置開(kāi)始放,最多放buf.length個(gè) * 返回的是讀到的字節(jié)的個(gè)數(shù) */ int bytes = in.read(buf,0,buf.length);//一次性讀完,說(shuō)明字節(jié)數(shù)組足夠大 int j = 1; for(int i = 0; i < bytes;i++){ System.out.print(Integer.toHexString(buf[i] & 0xff)+" "); if(j++%10==0){ System.out.println(); } }查看全部
-
5)FileInputStream--->具體實(shí)現(xiàn)了在文件上讀取數(shù)據(jù) /** * 讀取指定文件內(nèi)容,按照16進(jìn)制輸出到控制臺(tái) * 并且每輸出10個(gè)byte換行 * @param fileName * 單字節(jié)讀取不適合大文件,大文件效率很低 */ public static void printHex(String fileName)throws IOException{ //把文件作為字節(jié)流進(jìn)行讀操作 FileInputStream in = new FileInputStream(fileName); int b ; int i = 1; while((b = in.read())!=-1){ if(b <= 0xf){ //單位數(shù)前面補(bǔ)0 System.out.print("0"); } System.out.print(Integer.toHexString(b)+" "); if(i++%10==0){ System.out.println(); } } in.close(); }查看全部
-
4)輸出流基本方法 out.write(int b) 寫出一個(gè)byte到流,b的低8位 out.write(byte[] buf)將buf字節(jié)數(shù)組都寫入到流 out.write(byte[] buf,int start,int size)查看全部
-
IO流(輸入流、輸出流) 字節(jié)流、字符流 1.字節(jié)流 1)InputStream、OutputStream InputStream抽象了應(yīng)用程序讀取數(shù)據(jù)的方式 OutputStream抽象了應(yīng)用程序?qū)懗鰯?shù)據(jù)的方式 2)EOF = End 讀到-1就讀到結(jié)尾 3)輸入流基本方法 int b = in.read();讀取一個(gè)字節(jié)無(wú)符號(hào)填充到int低八位.-1是 EOF in.read(byte[] buf) in.read(byte[] buf,int start,int size)查看全部
-
對(duì)子類對(duì)象進(jìn)行反序列化操作時(shí),如果父類沒(méi)有實(shí)現(xiàn)序列化接口,那么其父類的構(gòu)造函數(shù)會(huì)被調(diào)用查看全部
-
public static void main(String[] args) throws IOException { File demo = new File("demo"); if (!demo.exists()) demo.mkdir(); File file = new File(demo, "raf.dat"); if (!file.exists()) file.createNewFile(); RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 指針的位置 System.out.println(raf.getFilePointer()); raf.write('A');// 只寫了一個(gè)字節(jié),並非整個(gè)char字符 System.out.println(raf.getFilePointer()); raf.write('B'); int i = 0x7fffffff; // 用write方法每次只能寫一個(gè)字節(jié),如果要把i寫進(jìn)去就得寫4次 raf.write(i >>> 24);// 高8位 raf.write(i >>> 16); raf.write(i >>> 8); raf.write(i); System.out.println(raf.getFilePointer()); // 可以直接寫一個(gè)int raf.writeInt(i); String s = "中"; byte[] gbk = s.getBytes("gbk"); raf.write(gbk); System.out.println(raf.length()); // 讀文件,必須把指針移到頭部 raf.seek(0); // 一次性讀取,把文件中的內(nèi)容都讀到字節(jié)數(shù)組中 byte[] buf = new byte[(int) raf.length()];// raf.length()返回一個(gè)long型 raf.read(buf); System.out.println(Arrays.toString(buf)); for (byte b : buf) { System.out.println(Integer.toHexString(b & 0xff) + " "); } raf.close(); }查看全部
-
RandomAccessFile java提供的對(duì)文件內(nèi)容的訪問(wèn),既可以讀文件,也可以寫文件。 RandomAccessFile支持隨機(jī)訪問(wèn)文件,可以訪問(wèn)文件的任意位置 (1)java文件模型 在硬盤上的文件是byte byte byte存儲(chǔ)的,是數(shù)據(jù)的集合 (2)打開(kāi)文件 有兩種模式"rw"(讀寫) "r"(只讀) RandomAccessFile raf = new RandomeAccessFile(file,"rw") 文件指針,打開(kāi)文件時(shí)指針在開(kāi)頭 pointer = 0; (3) 寫方法 raf.write(int)--->只寫一個(gè)字節(jié)(后8位),同時(shí)指針指向下一個(gè)位置,準(zhǔn)備再次寫入 (4)讀方法 int b = raf.read()--->讀一個(gè)字節(jié) (5)文件讀寫完成以后一定要關(guān)閉(Oracle官方說(shuō)明)查看全部
-
public static void main(String[] args) { // 了解構(gòu)造函數(shù)的情況 查幫助 File file = new File("E:\\javaio\\imooc"); //System.out.println(file.exists()); if(!file.exists()) file.mkdir(); //創(chuàng)建文件夾 else file.delete(); //是否是一個(gè)目錄 如果是目錄返回true,如果不是目錄or目錄不存在返回的是false System.out.println(file.isDirectory()); //是否是一個(gè)文件 System.out.println(file.isFile()); //File file2 = new File("e:\\javaio\\日記1.txt"); File file2 = new File("e:\\javaio","日記1.txt"); if(!file2.exists()) try { file2.createNewFile();//創(chuàng)建一個(gè)文件 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } else file2.delete(); //常用的File對(duì)象的API System.out.println(file);//file.toString()的內(nèi)容 System.out.println(file.getAbsolutePath()); System.out.println(file.getName()); System.out.println(file2.getName()); System.out.println(file.getParent()); System.out.println(file2.getParent()); System.out.println(file.getParentFile().getAbsolutePath()); }查看全部
-
1.GBK編碼,中文2個(gè)字節(jié),英文一個(gè)字節(jié) 2.UTF-8編碼,中文3個(gè)字節(jié),英文一個(gè)字節(jié) 3.JAVA是雙字節(jié)編碼(UTF-16be),中文2個(gè)字節(jié),英文2個(gè)字節(jié)查看全部
-
encodeDemo.java查看全部
-
課程目標(biāo)查看全部
-
單字節(jié)讀取不適合讀取較大的文件,大文件效率很低 批量字節(jié)讀取對(duì)大文件而言效率高查看全部
-
字節(jié)流處理查看全部
-
對(duì)子類對(duì)象進(jìn)行反序列化操作時(shí),若果其父類沒(méi)有實(shí)現(xiàn)序列化接口,那么其父類的構(gòu)造函數(shù)會(huì)被調(diào)用查看全部
-
自己完成反序列化的操作查看全部
舉報(bào)
0/150
提交
取消