I/O流中的字節流的讀取與輸入
(用于讀取寫入二進制文件,如圖片、聲音、影響等類型文件)
1.對于文件的讀取,輸入流InputStream下的子類FileInputStream有一個read()可以讀取數據,read(byte[])這個方法需要傳入一個參數這個參數是一個byte型的數組,用于存儲讀取到的數據2.把byte數組轉化為string類型的數據方便使用String str=new String(by)(by是byte型數組的名稱)讀取完文件后需要關閉輸入流,以免占用內存空間3.完整的過程需要用try/catch來包住,以免程序發生錯誤而終止不了讀取文件代碼示例:
public Static String getMsg(){ byte msg[]=new byte[100]; String str=null; try{ InputStream is=new FileInputStream("src/a.txt"); is.read(msg); str=new String(msg); is.close(); }catch(FileNotFoundException e){ e.PRintStackTrace(); }catch(IOException e){ e.printStackTrace(); } return str;}
4.對于文件的寫入,OutputStream下的子類FileOutputStream有一個write()方法寫入數據到指定文件,write()方法需要傳入一個byte[]數組,如果你想傳入String類型的數據,String類型數據有可以轉化為byte[]的方法寫入文件代碼示例:
public Static String putMsg(){ String msg=getMsg(); try{ OutputStream os=new FileOutputStream("src/b.txt",true); os.write(13); os.wirte(10); //在windows系統下,換行符用ASCII碼表示是13 10,這里是換行的意思 os.write(msg.getBytes()); //把String類型數據轉化為byte[]數組 os.flush(); //刷新輸出流 os.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }}5.上面是對于文本類型文件的讀取與寫入,但是圖片、聲音、影響文件不會把讀取的數據轉為String類型數據,而是直接用byte數組來存儲數據,然后全寫入另一個文件,相當于復制粘貼一個文件,這里需要注意的是讀取與寫入的文件類型要一致,即文件的后綴名需要一致。代碼示例演示復制粘貼并打開聲音文件:public static void get(){ try{ InputStream is=new FileInputStream("E:/音樂/金娜英 - 說出心聲.mp3"); OutputStream os=new FileInputStream("E:/Youku Files/mymusic.mp3"); byte music[]=new byte[1024*10]; int len=0; while((len=is.read(music))!=-1){ os.write(music); } is.close(); os.close(); }catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String cmd="cmd /c/"文件路徑.mp3/""; Runtime run=Runtime.getRuntime(); try{ run.exec(cmd); }catch (IOException e) { e.printStackTrace(); } //打開文件}
新聞熱點
疑難解答