输入/输出(五)

访问数组:ByteArrayOutputStream和ByteArrayInputStream类是在创建它的实例时,程序内部创建一个byte型 别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或 读出byte型数据。在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所 有的变量收集到一起,然后一次性把数据发送出去。 ByteArrayOutputStream:可以捕获内存缓冲区的数据,转换成字节数组。 ByteArrayInputStream:可以将字节数组转化为输入流 CharArrayReader、CharArrayWriter的使用与ByteArrayOutputStream、ByteArrayInputStream差不 多。
访问字符串:
StringReader:用来将字符串转换成字符输入流。然后使用字符输入流提供的方式进行操作,也可以提 供给其他高级字符输入流来使用。如可以将该字符输入流提供给BufferedReader输入流使用。
StringWriter:在内存中缓存读取到的所有字符串,然后使用toString方法一次性全部输出字符串。
缓冲流:在读写数据时,让数据在缓冲区能减少系统实际对原始数据来源的存取次数,因为一次能做多个数据单位的操作。相较而言,对于直接从文件读取数据或将数据写入文件,比起缓冲区的读写要慢多了。所以使用缓冲区的流,一般都会比没有缓冲区的流效率更高。拥有缓冲区的流被称为缓冲流,包括 BufferedInputStream、BufferedOutputStream类和BufferedReader、BufferedWriter类。缓冲流把数据从原始流成块读入或把数据积累到一个大数据块后再成批写出,通过减少通过资源的读写次数来加快程序的执行。
BufferedReader类:BufferedReader是Reader的子类,可以Reader的方法。从字符输入流中读取文本,缓冲各个字符,从 而实现字符、数组和行的高效读取。下面是BufferedReader的够构造器和特有的方法。
代码:Reader reader=new FileReader(“G:/java/L/Base_DataType.java”);
BufferedReader br=new BufferedReader(reader);
String str=“”;
while((str=br.readLine())!=null) {
System.out.println(str);
}
br.close();
构造器:
BufferedReader(Reader in):创建一个使用默认大小输出缓冲区的缓冲字符输入流对象
BufferedReader(Reader out,int sz):创建一个使用指定大小输出缓冲区的缓冲字符输入流对象
readLine():读取一个文本行。
BufferedWriterr类:BufferedWriter类是Writer的子类。
代码:BufferedWriter bw=new BufferedWriter(new FileWriter(“G:/java/L/BufferedWriter.txt”));
bw.write(“123456789”);
bw.newLine();//换行
bw.write(“asdfghjkl”);
bw.newLine();//换行
bw.write(“ASDFGHJKL”);
bw.newLine();//换行
bw.flush();
bw.close();
构造器:
BufferedWriter(Writer out):创建一个使用默认大小输出缓冲区的缓冲字符输出流对象
BufferedWriter(Writer out,int sz):创建一个使用指定大小输出缓冲区的缓冲字符输出流对象
newLine():写入一个行分隔符
RandomAccessFile类:RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,它提供了众多的方法 来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。RandomAccessFile支持“随机访问”的方式,程序可以直接跳转到文件的任意地方来读写数据。
RandomAccessFile四种访问模式:
“r”:以只读方式打开指定文件。如果试图对该RandomAccessFile执行写入方法,都将抛出IOException异常。
代码:public static void demo1() throws IOException {
//实例化RandomAccessFile类,指定只读模式
RandomAccessFile accessFile=new RandomAccessFile(“G:/java/L/Base_DataType.java”, “r”);
//调到指定位置
accessFile.seek(24);
//读取文件
byte[] bytes=new byte[1024];
int count=0;
while((count=accessFile.read(bytes, 0, bytes.length))!=-1) {
System.out.println(new String(bytes,0,count));
}
//关闭流
accessFile.close();
}
“rw”:以读、写方式打开指定文件。如果该文件尚不存在,则尝试创建该文件。
代码:public static void demo2() throws IOException {
//读写模式
RandomAccessFile aFile=new RandomAccessFile(“G:/java/L/Base_DataType.java”, “rw”);
//跳到文件末尾位置
aFile.seek(aFile.length());
aFile.write(“//在末尾追加的注释”.getBytes(Charset.forName(“UTF-8”)));
//关闭流
aFile.close();
}
"rws”:以读、写方式打开指定文件。相对于"rw"模式,还要求对文件的内容或元数据的每个更新 都同步写入到底层存储设备。
“rwd”: 以读、写方式打开指定文件。相对于"rw"模式,还要求对文件的内容的每个更新都同步写入 到底层存储设备。 元数据是文件的附加属性,如文件大小、创建时间、所有者等信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值