文章目录
Java SE
例。
一、FIS
FIS(构造、异常、close)
FileInputStream(File file)
通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定
FileInputStream(String name)
通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定
IOException
当发生某种I/O异常时,抛出此异常。此类为异常的通用类,它是由失败的或中断的I/O操作生成的
close方法
关闭此输入流并释放与该流关联的所有系统资源
FIS(read)
方法 | 功能 |
---|---|
int read() | 读取一个byte无符号填充到int低八位 |
int read(byte[] b) | 从此输入流中将最多b.length个字节的数据读入一个字节数组中,返回读取的字节的个数 |
int read(byte[] b,int off,int len) | 从此输入流中将最多len个字节的数据读入一个字节数组中 |
import java.io.FileInputStream;
import java.io.IOException;
/**
* java.io.FileInputStream
* 文件输入流,是一个低级流,用于从文件中读取字节
*/
public class FISDemo {
public static void main(String[] args) throws IOException {
FileInputStream file = new FileInputStream("fos.txt");
byte[] data = new byte[100]; //创建一个100长度字节的数组
int len = file.read(data); //读取file文件中一百个字节数据
String str = new String(data,0,len,"UTF-8"); //从指针0位置按UTF-8格式读取len长度字节
System.out.println(str);
file.close();
}
}
代码案例:使用文件流来复制文件
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 使用文件流复制文件
*/
public class CopyDemo {
public static void main(String[] args) throws IOException {
/*
使用文件输入流读取原文件,再使用文件输出流向目标文件中写入
顺序从原文件中读取每个字节并写入到目标文件即可完成复制
*/
FileInputStream src = new FileInputStream("image.png");
FileOutputStream desc = new FileOutputStream("image02.png");
int d = -1; //默认在文件末尾,只是赋初值,具体值赋几都行
byte[] data = new byte[100];
long start = System.currentTimeMillis();
while((d=src.read(data))!=-1){
desc.write(data,0,d); //每次最多写data个字节,从指针0可是写d个字节
}
long end = System.currentTimeMillis();
System.out.println("复制完毕!耗时:"+(end-start)+"ms");
src.close();
desc.close();
}
}
二、FOS
FOS(构造)
方法 | 功能 |
---|---|
FileOutputStream(File file) | 创建一个向指定File对象表示的文件中写入数据的文件输出流 |
FileOutputStream(File file,boolean append) | 创建一个向指定File对象表示的文件中写入数据的文件输出流 |
FileOutputStream(String name) | 创建一个向具有指定名称的文件中写入数据的输出文件流 |
FileOutputStream(String name,boolean append) | 创建一个向具有指定name的文件中写入数据的输出文件流 |
FOS(write)
方法 | 功能 |
---|---|
void write(byte[] b) | 将b.length个字节从指定字节数组写入此文件输出流中 |
void write(byte[] b,int off,int len) | 将指定字节数组中从偏移量off开始的len个字节写入此文件输出流 |
void write(int b) | 将指定字节写入此文件输出流 |
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 流
* 流根据方向的不同分为输入流和输出流,参照点为当前程序
* 输入流用来读取数据,输出流用来写出数据
* java.io.InputStream抽象类,定义了输入流的读取字节方法,所有的字节输入流都继承自它
* java.io.OutputStream则是所有字节输出流的父类
*
* 流分为节点流与处理流
* 节点流,也叫低级流,是负责读写数据的流,读写操作中必须要有低级流,数据源明确
* 处理流,也叫高级流,读写可以没有高级流,高级流也不能独立存在,必须用于处理其他流,处理其他流的目的是简化读写数据中的操作
*
* java.io.FileOutputStream
* 文件输出流,是一个低级流,作用是向文件中写出字节
*/
public class FOSDemo {
public static void main(String[] args) throws IOException {
/*
默认创建的FOS是覆盖写操作
FOS会将文件数据(若有数据)全部删除,然后在开始写
*/
FileOutputStream fos = new FileOutputStream("fos.txt");
String str = "我喜欢Java!";
/*
String->byte[]
byte getBytes()
将当前字符串按照系统默认字符集转换为一组字节
byte getBytes(String csn)
按照给定的字符集将当前字符串转换为一组字节
*/
byte[] date = str.getBytes</