已采納回答 / SHsama
兩個漢字,四個字節。按你所說,你覺得應該使用四次寫操作,但是那是相對于直接寫入字符來說的,此處使用了字節數組,數組相當于一個有序的容器,在數組中”中國“被分成四個字節依次寫入其中,out.write(bytes);就將這個數組寫入其中,數組其中的寫字節操作在內部進行,不是靠四個write操作寫入的。你可以將鼠標放到你寫的write上可看到該方法提示Writes b.length bytes from the specified byte array to this file
output stream....
2017-03-05
已采納回答 / 向上看
因為你每run一次,指針都是從0開始的,每run一次都改寫了上一次內容,你可以嘗試運行一下老師的程序,然后再在程序前添加 raf.seek(12),使下一次從12byte處開始寫,運行后你會發現輸出長度為24
2017-03-03
已采納回答 / 歷飛雨
前面不是設定了一個條件嗎?每輸出10個byte就換行,這個if語句就是用來換行的while((b=in.read())!=-1){?? ??? ??? ?if(b<=0xf)//如果輸出的整形b字節小于等于4位,就讓它補0,就是讓它剛好占一個字節,便于觀察?? ??? ??? ??? ?System.out.print("0");?? ??? ??? ?System.out.print(Integer.toHexString(b)+" ");//將整形b轉換為十六進制表示的字符串?? ??? ???...
2017-02-26
已采納回答 / chapelin_wang
老師可能手誤吧,正常邏輯是如果文件不存在,則新建文件,否則就刪除。至于異常,你調用的這個方法,它拋出了一些異常,在這里你要做處理,要么try catch, 要么繼續向上拋(throws),如果回答有誤,請聯系我。本人也是小菜鳥一枚。
2017-02-26
已采納回答 / 歷飛雨
java中0x開頭表示的是該數為十六進制,如int i=0xf;//以0x開頭表示十六進制的寫法以0開頭的表示該數是八進制,如 int n=010;//以0開頭表示八進制0xff中的f指的是十六進制中的f,f轉換為十進制是15,f轉換為二進制是1111(前頭可以根據位數的不同來補0)0xff中的ff指的是十六進制中的ff,ff轉換為十進制就是255,ff轉換為二進制就是1111 1111(前頭可以根據位數的不同來補0)
2017-02-23
已采納回答 / qq__6307
先說說概念 RandomAccessFile 這個類 是對文件進行 讀寫 操作 而且 這個寫 只是往里寫東西 說白了就是 按照你輸出的次序寫入文件中,或者 進行拷貝。所以不能進行刪除操作。File類可以進行對文件屬性的訪問有此操作,你可以結合在一起使用。
2017-02-18
已采納回答 / 向上看
byte[] buf=new byte[(int)raf.length()] //創建一個與raf內字節長度等長的字節數組raf.read(buf)//將raf內的內容以字節形式存在buf字節數組中
2017-02-11
已采納回答 / 律生息
一切都是由于BOM當我們直接在記事本中直接創建文本文件,不使用另存為那么文本文件默認以ansi編碼來保存文字信息,卻沒有給他加上BOM,(BOM)就是該文本編碼格式的標記,用來告訴記事本(或者其他軟件這里面的內容有什么編碼來解析)另存為這個過程就是加了BOM你沒有另存為就沒有BOM那么問題來了記事本說“mdzz,這到底要我怎么解析呢?沒辦法,一個個試吧,誒!“由于默認的聯通,聯,在用ANSI保存時,編碼格式類似UTF-8,所以解析為utf-8,而聯想不符合utf-8編碼規則于是乎內容就生氣了“。。。。。。...
2017-02-05