java File 如何获取字节 java获取文件字节流

字节流

1 数据的本质

所有类型的数据在计算机中都是由0和1组成

计算机只能识别0和1

所有的数据在传输过程中都是以0和1进程传输

数据的本质:二进制

编码:将数据转换为二进制的过程

解码:将二进制数据转换为对应数据的过程

2 字节输出流OutputStream

OutputStream类概述

Output:输出

Stream:字节流,以字节为单位读写数据

概述:是一个抽象类,不能直接创建对象,只能使用子类,是所有字节输出流的父类

作用:将内存中的数据输出到文件中

FileOutputStream类构造方法

字节输出流的使用步骤

创建字节输出流对象并关联目标文件

调用字节输出流对象的write方法输出数据:一个字节,一个字节数组,一个字节数组的一部分

调用字节输出流对象的close方法关闭流释放资源

OutputStream类常用子类

FileOutputStream

BufferedOutputStream

ObjectOutputStream

PrintStream

OutputStream类常用方法

void close() 关闭流释放资源

void flush() 刷新缓冲区

void write(byte[] b)

输出一个字节数组

void write(byte[] b, int off, int len)

输出字节数组的一部分内容

off:字节数组的起始索引

len:要输出的字节个数

void write(int b)

输出一个字节

3 FileOutputStream类

FileOutputStream类常用构造方法

FileOutputStream(String name)

根据文件路径创建字节输出流对象

如果目标文件不存在,则会自动创建该文件

FileOutputStream(File file)

根据文件对象创建字节输出流对象

如果目标文件不存在,则会自动创建该文件

FileOutputStream类一次写出一个字节


本文章只有一个运行结果图片,如下


代码

import java.io.File;
import java.io.FileOutputStream;
public class FileOutputStreamDemo {
public static void main(String[] args)throws Exception{
test01();
}
/*
FileOutputStream类一次输出一个字节
*/
private static void test01() throws Exception{
// 创建字节输出流并关联目标文件
// FileOutputStream fos = new FileOutputStream("a.txt");
FileOutputStream fos = new FileOutputStream(new File("a.txt"));
// 输出一个字节
fos.write();
fos.write(
);
// 关闭流
fos.close();
}
}

FileOutputStream类一次写出一个字节数组

import java.io.File;
import java.io.FileOutputStream;
public class FileOutputStreamDemo01 {
public static void main(String[] args)throws Exception{
test01();
}
/*
FileOutputStream类一次输出一个字节数组
*/
private static void test01() throws Exception{
// 创建字节输出流并关联目标文件
// FileOutputStream fos = new FileOutputStream("b.txt");
FileOutputStream fos = new FileOutputStream(new File("b.txt"));
// 要输出的内容
String str = "嘻嘻";
// 将字符串转换为字节数组
byte[] buf = str.getBytes();
// 一次输出一个字节数组
fos.write(buf);
// 字节数组
byte[] bytes = {,,,,};
// 输出字节数组的内容
fos.write(bytes);
// 输出字节数组的一部分
fos.write(bytes,1,3);
// 关闭流
fos.close();
}
}

追加和换行写出数据

/**

FileOutputStream类实现追加和换行输出

FileOutputStream类与追加输出相关的构造方法

FileOutputStream(File file, boolean append)

FileOutputStream(String name, boolean append)

根据文件路径创建字节输出流对象

如果目标文件不存在,则会自动创建该文件,如果文件存在且没有指定追加输出,则会清空文件内容

append:true表示追加输出,false:不追加,会先清空目标文件的内容,再输出新的数据

*/

import java.io.FileOutputStream;
public class FileOutputStreamDemo02 {
public static void main(String[] args)throws Exception{
test01();
}
/*
FileOutputStream类实现追加输出
*/
private static void test01() throws Exception{
// 创建字节输出流并关联目标文件
FileOutputStream fos = new FileOutputStream("c.txt",true);
// 一次输出一个字节数组
fos.write("哈哈\r\n".getBytes());
// 关闭流
fos.close();
}
}

4 字节输入流InputStream

InputStream类概述

Input:输入

Stream:字节流

概述:是一个抽象类,也不能直接创建对象,只能创建子类对象,是所有字节输入流的父类

作用:从文件中读取数据到程序中

InputStream类常用子类

FileInputStream(今天重点)

BufferedInputStream

ObjectInputStream

InputStream类常用方法

void close() 关闭流释放资源

int read() 读取一个字节,返回读取到的字节数,如果读取到文件末尾,则返回-1

int read(byte[] b)

将读取到内容存储到字节数组b中,返回实际读取到字节个数

如果读取到文件末尾,则返回-1

int read(byte[] b, int off, int len)

将读取到内容存储到字节数组b中,返回实际读取到字节个数

off:字节数组的起始索引

len:能够存储的字节个数

5 FileInputStream类

FileInputStream类常用构造方法

FileInputStream(String name)

FileInputStream(File file)

根据文件路径创建字节输入流对象

FileInputStream类一次读取一个字节

import java.io.FileInputStream;
public class FileInputStreamDemo {
public static void main(String[] args)throws Exception{
test01();
//test02();
}
/*
FileInputStream类一次读取一个字节
*/
private static void test01() throws Exception {
// 创建字节输入流对象并关联目标文件
FileInputStream fis = new FileInputStream("a.txt");
// 读取一个字节
int len = fis.read();
System.
out.println((char) len);
len = fis.read();
System.
out.println((char) len);
len = fis.read();
System.
out.println((char) len);
len = fis.read();
System.
out.println((char) len);
len = fis.read();
System.
out.println((char) len);
len = fis.read();
System.
out.println(len);
// 关闭流
fis.close();
}
/*
FileInputStream类一次读取一个字节:使用循环改进
*/
private static void test02() throws Exception {
// 创建字节输入流对象并关联目标文件
FileInputStream fis = new FileInputStream("a.txt");
// 定义变量接收读取到的字节
int len = -1;
while((len = fis.read()) !=-1){
System.
out.print((char) len);
}
// 关闭流
fis.close();
}
}

FileInputStream类一次读取一个字节数组

/**

FileInputStream类一次读取一个字节数组

字节输入流的使用步骤

* 创建字节输入流对象并关联目标文件

* 调用read方法读取数据:读取一个字节,一个字节数组

* 调用close方法关闭流释放资源

*/

import java.io.FileInputStream;
public class FileInputStreamDemo01 {
public static void main(String[] args)throws Exception {
//test01();
test02
();
}
/*
FileInputStream类一次读取一个字节数组:使用循环读取
*/
private static void test02() throws Exception {
// 创建字节输入流对象并关联目标文件
FileInputStream fis = new FileInputStream("a.txt");
// 定义变量接收实际读取的字节个数
int len = -1;
// 定义字节数组存储实际读取到的字节数
byte[] buf = new byte[];
// 循环读取
while((len = fis.read(buf)) != -1){
System.
out.println(new String(buf,0,len));
}
// 关闭流
fis.close();
}
/*
FileInputStream类一次读取一个字节数组
*/
private static void test01() throws Exception {
// 创建字节输入流对象并关联目标文件
FileInputStream fis = new FileInputStream("a.txt");
// 定义字节数组
byte[] buf = new byte[2];
// 读取一个字节数组并获得实际读取的字节个数
int len = fis.read(buf);
System.
out.println(len);
System.
out.println(new String(buf));
// 读取一个字节数组并获得实际读取的字节个数
len = fis.read(buf);
System.
out.println(len);
System.
out.println(new String(buf));
// 读取一个字节数组并获得实际读取的字节个数
len = fis.read(buf);
System.
out.println(len);
System.
out.println(new String(buf));
// 读取一个字节数组并获得实际读取的字节个数
len = fis.read(buf);
System.
out.println(len);
System.
out.println(new String(buf));
// 关闭流
fis.close();
}
}

原文链接:,转发请注明来源!