本文实例讲述了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