本文實例講述了java輸入輸出流。分享給大家供大家參考,具體如下:
字節輸出流,輸出到文件中(寫)
outputstream抽象類
選好文件
子類實例化,需要拋異常
稍后傳輸的數據覆蓋原內容
1
|
outputstream output = new fileoutputstream(file); |
稍后傳輸的數據追加在原數據之后
1
|
outputstream output = new fileoutputstream(file, true ); |
選好數據,轉換為字節數組
1
2
|
string msg = "你好\r\n世界" ; byte data[] = msg.getbytes(); |
-
windows系統txt文件換行用
\r\n
輸出到文件(向文件中寫數據)
1
|
output.write(data); |
寫入部分數據
1
|
output.write(data, 3 , 8 ); |
- 從字節數組data的腳標為3開始8個字節寫入此輸出流。
關閉輸出流
1
|
output.close(); |
字節輸入流,文件中數據讀取到程序中(讀)
inputstream抽象類
選好文件
1
|
file file = new file( "e:" + file.separator + "myfile" + file.separator + "test" + file.separator + "123.txt" ); |
子類實例化,需要拋異常
1
|
fileinputstream input = new fileinputstream(file); |
讀取數據,并將數據保存到指定字節數組中
1
2
|
byte data[] = new byte [ 100 ]; int len = input.read(data); |
- 字節數組的長度需要選的合適,如果從文件中讀取的內容的的字節數超過了指定字節數組的長度,那么超過的部分將無法保存到指定的字節數組中,這樣內容就會丟失,如果遇到正文這樣一個字占多個字節的,也可能出現亂碼。
三種讀取數據方式
1
2
|
byte data[] = new byte [ 100 ]; int len = input.read(data); |
從此輸入流中將最多 data.length
個字節的數據讀入data
數組中。在某些輸入可用之前,此方法將阻塞。
返回:讀入緩沖區的字節總數,如果因為已經到達文件末尾而沒有更多的數據,則返回 -1。
1
2
|
byte data[] = new byte [ 100 ]; int len = input.read(data, 5 , 14 ); |
從此輸入流中將最多14個字節的數據讀入data數組中,讀入位置為data數組后偏移5個位置,即讀入的開始位置是數組腳標為5的位置
返回:讀入緩沖區的字節總數,如果因為已經到達文件末尾而沒有更多的數據,則返回 -1。
1
2
3
4
5
6
7
|
byte data[] = new byte [ 100 ]; int i = 0 ; int read = input.read(); while (read != - 1 ){ data[i++] = ( byte )read; read = input.read(); } |
從此輸入流中讀取一個數據字節。如果沒有輸入可用,則此方法將阻塞。
返回:下一個數據字節;如果已到達文件末尾,則返回 -1。
注意有參數的和無參數的read方法的返回值是不一樣的,有參數的返回的是讀取字節的個數,無參的返回的是字節的int值,如果要保存到字節數組,還需要強轉為byte型。
將字節數組轉換為字符串輸出到控制臺
1
2
|
string x = new string(data); system.out.println(x); |
關閉輸入流
1
|
input.close(); |
字符輸出流:writer
1
2
3
4
5
6
7
8
9
10
11
|
import java.io.file; import java.io.filewriter; import java.io.writer; public class hello { public static void main(string[] args) throws exception{ file file = new file( "e:" + file.separator + "myfile" + file.separator + "test" + file.separator + "123.txt" ); writer writer = new filewriter(file); writer.write( "你好\r\nworld" ); writer.close(); } } |
write
方法的參數直接寫字符串即可。
必須要關閉字符輸出流,不然數據只是保存在緩沖區中,并沒有寫入文件。
字符輸入流:reader
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import java.io.file; import java.io.filereader; import java.io.reader; public class hello { public static void main(string[] args) throws exception { file file = new file( "e:" + file.separator + "myfile" + file.separator + "test" + file.separator + "123.txt" ); char data[] = new char [ 100 ]; reader reader = new filereader(file); reader.read(data); string x = new string(data); system.out.println(x); reader.close(); } } |
read
方法是將讀取的數據保存到字符數組中。
希望本文所述對大家java程序設計有所幫助。
原文鏈接:https://blog.csdn.net/shuair/article/details/81984299