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();
}
}