java 字节操作类_Java字节流与字符流基本操作

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据时要使用输入流读取数据,而当程序需要将一些数据保存起来时,就要使用输出流。

在java.io包中流的操作主要有字节流、字符流两大类,两类都有输入和输出操作。

在字节流中输出数据主要使用OutStream类完成,输入使用的是InputStream类。

在字符流中输出主要使用Write类完成,输入主要是使用Reader类完成。

字节流

字节流主要操作byte类型数据,以byte数组为准,主要操作类是OutputStream类和InputStream类。

<1>字节输出流:OutputStream类

OutputStream是整个IO包中字节输出流的最大父类

54d8ccf75770241973a73f3848274bf1.png

向文件中写入字符串

文件不存在则会自动创建

直接将一个字符串变为byte数组,然后将byte数组直接写入到文件中

//=================================================

// File Name :OutputStream_demo

//------------------------------------------------------------------------------

// Author :Common

import java.io.File;

import java.io.OutputStream;

import java.io.FileOutputStream;

//主类

//Function : 向文件中写入字符串

public class OutputStream_demo {

public static void main(String[] args) throws Exception {//异常抛出,不处理

// TODO 自动生成的方法存根

//第一步,找到一个文件

File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径

//第二步,通过子类实例化父类对象

OutputStream out = null;//准备好一个输出的对象

out = new FileOutputStream(f);//通过对象多态性,进行实例化

//第三步,进行写操作

String str = "HelloWord";//准备一个字符串

byte b[] = str.getBytes();//只能输出byte数组,所以将字符串变成byte数组

out.write(b); //将内容输出,保存文件

//第四步,关闭输出流

out.close(); //关闭输出流

}

}

追加新内容

可以通过FileOutputStream向文件中追加内容。

//=================================================

// File Name :OutputStream_demo

//------------------------------------------------------------------------------

// Author :Common

import java.io.File;

import java.io.OutputStream;

import java.io.FileOutputStream;

//主类

//Function : 向文件中写入字符串

public class OutputStream_demo {

public static void main(String[] args) throws Exception {//异常抛出,不处理

// TODO 自动生成的方法存根

//第一步,找到一个文件

File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径

//第二步,通过子类实例化父类对象

OutputStream out = null;//准备好一个输出的对象

//out = new FileOutputStream(f);//通过对象多态性,进行实例化

out = new FileOutputStream(f,true);//此处表示在文件末尾追加内容

//第三步,进行写操作

String str = "HelloWord";//准备一个字符串

byte b[] = str.getBytes();//只能输出byte数组,所以将字符串变成byte数组

//out.write(b); //将内容输出,保存文件

for(int i=0;i

out.write(b[i]);

}

//第四步,关闭输出流

out.close(); //关闭输出流

}

}

<2>字节输入流:InputStream类

和OutputStream一样,InputStream也是抽象类,必须依靠子类

0d29cf13cd8b0c6144d8fc8c7e1c1c0f.png

//=================================================

// File Name :InputStream_demo

//------------------------------------------------------------------------------

// Author :Common

import java.io.File;

import java.io.InputStream;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

//主类

//Function : 从文件中读取内容

public class InputStream_demo {

public static void main(String[] args) throws Exception {//异常抛出,不处理

// TODO 自动生成的方法存根

//第一步,找到一个文件

File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径

//第二步,通过子类实例化父类对象

InputStream input = null;//准备好一个输出的对象

input = new FileInputStream(f);//通过对象多态性,进行实例化

//第三步,进行读操作

//byte b[] = new byte[1024];//所有的内容读到此数组中

byte b[] = new byte[(int)f.length()];//所有的内容读到此数组中,数组大小由文件决定

//input.read(b);//把内容取出,内容读到byte数组中

int len = input.read(b);

//第四步,关闭输入流

input.close();

System.out.println("读入数据的长度:"+len);//没有多余的空格产生

System.out.println("内容为:"+new String(b,0,len));//把byte数组变为字符串输出

//System.out.println("内容为:"+new String(b));//把byte数组变为字符串输出

}

}

字符流

在程序中一个字符等于两个字节,Java提供了Reader和Writer两个专门操作字符流的类。

<1>字符输出流Writer

也是一个抽象类

a099e3ed00b05a4282f222819e0dd3ad.png

和OutputStream相比,可以直接输出字符串,而不用将字符串变为byte数组之后再输出。

//=================================================

// File Name :Write_demo

//------------------------------------------------------------------------------

// Author :Common

import java.io.File;

import java.io.FileInputStream;

import java.io.FileWriter;

import java.io.InputStream;

import java.io.Writer;

//主类

//Function : 向文件中写入内容

public class Write_demo {

public static void main(String[] args) throws Exception{

// TODO 自动生成的方法存根

//第一步,找到一个文件

File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径

//第二步,通过子类实例化父类对象

Writer out = null;//准备好一个输出的对象

//out = new FileWriter(f);//通过对象多态性,进行实例化

out = new FileWriter(f,true);//通过对象多态性,进行实例化

//第三步,进行写操作

String str = "HelloWord!!!";//准备一个字符串

out.write(str);//把内容取出,内容读到byte数组中

//第四步,关闭输入流

out.close();

}

}

<2>字符输入流Reader

Reader是使用字符的方式从文件中取出数据

6df79ae5b6a577972c7338fb5be762d8.png

//=================================================

// File Name :Reader_demo

//------------------------------------------------------------------------------

// Author :Common

import java.io.File;

import java.io.FileReader;

import java.io.Reader;

//主类

//Function : 从文件中读取内容

public class Reader_demo {

public static void main(String[] args) throws Exception {

// TODO 自动生成的方法存根

//第一步,找到一个文件

File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径

//第二步,通过子类实例化父类对象

Reader reader = null;//准备好一个输出的对象

reader = new FileReader(f);//通过对象多态性,进行实例化

//第三步,进行读操作

char c[] = new char[1024];//所有的内容读到此数组中

int len = reader.read(c);//将内容输出

//第四步,关闭输入流

reader.close();//关闭输入流

System.out.println("内容为:"+new String(c,0,len));//把char数组变为字符串输出

}

}

字节流与字符流的区别

字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的

字符流在操作时使用了缓冲区,通过缓冲区再操作文件

如果一个程序频繁地操作一个资源(如文件或者数据库),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能。

c4a2b0b17dc87e5a5c5e0cd342f61157.png

使用字节流更好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值