10.4-全栈Java笔记:常用流详解(二)

上节我们讲到「Java中常用流:文件字节流和字节数组流」,本节我们继续走起~

 缓冲流

BufferedInputStream和BufferedOutputStream这两个流是处理流,通过内部缓存数组来提高操作流的效率。

【示例1】使用缓冲流实现文件的高效率复制操作


public class Demo06 {

public static void main(String[] args) {

new Demo06().copyFile("d:/a.txt", "d:/b.txt");

}

void copyFile(String src,String dec){

FileInputStream fis = null;

BufferedInputStream bis = null;

FileOutputStream fos = null;

BufferedOutputStream bos = null;

int temp = 0;

try {

fis = new FileInputStream(src);

bis = new BufferedInputStream(fis);

fos = new FileOutputStream(dec);

bos = new BufferedOutputStream(fos);

while((temp=bis.read())!=-1){

bos.write(temp);

}

catch (Exception e) {

e.printStackTrace();

finally{

//********增加处理流后,注意流的关闭顺序!“后开的先关闭!”

try {

if(bos!=null){

bos.close();

}

catch (IOException e) {

e.printStackTrace();

}

try {

if(bis!=null){

bis.close();

}

catch (IOException e) {

e.printStackTrace();

}

try {

if(fos!=null){

fos.close();

}

catch (IOException e) {

e.printStackTrace();

}

try {

if(fis!=null){

fis.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

}

示例1 运行结果

数据流将“基本数据类型变量”作为数据源,从而允许程序以与机器无关方式从底层输入输出流中操作java基本数据类型。

DataInputStream和DataOutputStream提供了可以存取与机器无关的所有Java基础类型数据(如:int,double 等)的方法。

【示例2DataInputStreamDataOutputStream的使用


package com.bjsxt.io;

import java.io.*;

public class TestDataStream {

public static void main(String[] args) {

DataOutputStream dos = null;

DataInputStream dis = null;

FileOutputStream fos = null;

FileInputStream  fis = null;

try {

fos = new FileOutputStream("D:/data.txt");

fis = new FileInputStream("D:/data.txt");

dos = new DataOutputStream(new BufferedOutputStream(fos));

dis = new DataInputStream(new BufferedInputStream(fis));

//将如下数据写入到文件中

dos.writeDouble(Math.random());

dos.writeBoolean(true);

dos.writeInt(10);

dos.writeChar(‘a‘);

dos.flush();     //将流中数据写入到文件中

//从文件中直接读取基本数据

System.out.println("double: " + dis.readDouble());

System.out.println("boolean: " + dis.readBoolean());

System.out.println("int: " + dis.readInt());

System.out.println("char: " + dis.readChar());

catch (IOException e) {

e.printStackTrace();

finally {

try {

if(dos!=null){

dos.close();

}

catch (IOException e) {

e.printStackTrace();

}

try {

if(dis!=null){

dis.close();

}

catch (IOException e) {

e.printStackTrace();

}

try {

if(fos!=null){

fos.close();

}

catch (IOException e) {

e.printStackTrace();

}

try {

if(fis!=null){

fis.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

}



「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。

  笔记包含从浅入深的六大部分:

A-Java入门阶段

B-数据库从入门到精通

C-手刃移动前端和Web前端

D-J2EE从了解到实战

E-Java高级框架精解

F-Linux和Hadoop

时间: 2024-10-07 21:38:22

10.4-全栈Java笔记:常用流详解(二)的相关文章

10.3-全栈Java笔记:常用流详解(一)

 文件字节流 FileInputStream通过字节的方式读取文件,适合读取所有类型文件(图像.视频.文本文件等).Java也提供了FileReader专门读取文本文件. FileOutputStream 通过字节的方式写数据到文件,适合所有类型文件.Java也提供了FileWriter专门写入文本文件. [示例1]将文件内容读取到程序中.  import java.io.*; public class Demo02 { public static void main(String[] args

10.6-全栈Java笔记:常见流详解(四)

上节我们讲到「Java中常用流:数据流和对象流」,本节我们学习文件字符流和文件缓冲流~ 文件字符流 前面介绍的文件字节流可以处理所有的文件,但是字节流不能很好的处理Unicode字符,经常会出现"乱码"现象.所以,我们处理文本文件,一般可以使用文件字符流,它以字符为单位进行操作. [示例1]使用FileReader与FileWriter实现文本文件的copy package com.bjsxt.io; import java.io.*; /** * 测试文件字符流 * @author 

10.5-全栈Java笔记:常见流详解(三)

上节我们讲到「Java中常用流:缓冲流」,本节我们学习数据流和对象流~ 数据流 数据流将"基本数据类型变量"作为数据源,从而允许程序以与机器无关方式从底层输入输出流中操作java基本数据类型. DataInputStream和DataOutputStream提供了可以存取与机器无关的所有Java基础类型数据(如:int,double 等)的方法. [示例1]DataInputStream和DataOutputStream的使用 package com.bjsxt.io; import 

10.7-全栈Java笔记:常见流详解(五)

本节我们学习「常见流中的最后两项:转换流和随意访问文件流」~ 转换流 InputStreamReader/OutputStreamWriter用来实现将字节流转化成字符流.比如,如下场景: System.in是字节流对象, new BufferedReader(须接受Reader对象).我们就能将System.in转换成Reader对象,即可完成此场景. [示例1]使用InputStreamReader接受用户的输入 BufferedReader bReader= null; try { Sys

python中常用模块详解二

log模块的讲解 1 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适: 2 3 logger提供了应用程序可以直接使用的接口API: 4 handler将(logger创建的)日志记录发送到合适的目的输出: 5 formatter决定日志记录的最终输出格式 6 filter提供了细度设备来决定输出哪条日志记录: 7 8 logger 9 每个程序在输出信息之前都要获得一个Logger.Logger通常对应了程序的模块名, 10 比如聊天工具的图形界面模块

Java之IO流详解

IO流 Input/Output 完成输入/输出 应用程序运行时——数据在内存中  ←→ 把数据写入硬盘(磁带)  内存中的数据不可持久保存的  输入:从外部存储器(硬盘.磁带.U盘)把数据读入内存. 输出:从内存中把数据写入外部存储区(硬盘.磁带.U盘)中,这样就可以保证:即使程序退出了,数据依然不会丢失. File — 代表磁盘上的文件或目录. ●  listRoots() :列出磁盘上所有的根目录 ● exists:判断是否存在 ● mkdir:创建目录 ● listFiles():列出当

java I/O流详解

概况 I/O流主要分为二大类别:字符流和字节流. 字节流(基本流) 1.字节输入流    类名:FileInputStream    特点:读(对文件进行读取操作)    父类:InputStream 2.字节输出流    类名:FileOutputStream 特点:写 (对文件进行写入操作)    父类:OutputStream 字符流(基本流) 1.字符输入流    类名:FileReader   特点:读(对文件进行读取操作)     父类:InputStreamReader 2.字符输

Java笔记:字符串详解

更新时间:2018-1-6 21:20:39 更多请查看在线文集:http://android.52fhy.com/java/index.html String 字符串创建 String str1="ABC";//推荐使用 String str2 = new String("ABC"); 第一种更省空间.对于字符串比较,如果直接使用==是判断地址是否相同,判断值是否相同需要使用String.equals()方法. 对于字符串:其对象的引用都是存储在栈中的,如果是编译

Java I/O流详解与应用(二)

I/O流(二) 一.缓冲流(缓冲区): 特点:本身没有读写的能力,需要借助普通的读写流进行读写,但可以加快读写的效率 分类:字符缓冲流:BufferedReader(读),BufferedWriter(写) 字节缓冲流:BufferedInputStream(读),BufferedOutputStream(写) 字符缓冲流代码实现文件读写: public class Test { public static void main(String[] args) throws IOException