字节输出流 【OutputStream】
将指定字节信息写出到目的地。定义字节输出流的基本共性功能方法。此抽象类是字节输出流的超类。
public void close();
public void flush();
public void write(byte[] b);
public void write(byte[] b,int off,int len);
文件字节输出流 【FileOutputStream】
FileOutputStream extends OutputStream
//构造方法
FileOutPutStream(String name);
FilreOutPutStream(File file);
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
byte[] byte0 = {97,98,99,100};
byte[] byte1 = "你好".getBytes(StandardCharsets.UTF_8);
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\forever\\Desktop\\summer.txt",false);
fileOutputStream.write(97);
fileOutputStream.write(byte0);
fileOutputStream.write(byte1);
System.out.println(Arrays.toString(byte1));
fileOutputStream.close();
}
}
//运行结果为:在桌面中的summer.txt文件中生成文字:aabcd你好
字节输出流的续写和换行:
构造方法:
FileOutputStream(String name,boolean append);
FileOutputStream(File file,boolean append);
参数:
String name;File file:写入数据的目的地
Boolean append:追加写的开关:true(创建对象不会覆盖源文件,继续在文件末尾追加写数据);false(创建一个新文件,覆盖源文件)
换行:
windows:\r\n
Linux:/n
mac:/r
字节输入流 【InputStream】
该抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。他定义了字节输入流的基本共性功能方法。
public void close():关闭此输入流并释放与此流相关联的任何系统资源;
public abstract int read():从输入流读取数据的下一个字节;
public int read(byte[] b):从输入流中读取一些字节数,并将它们存储到字节数组b中
文件字节输入流 【FileInputStream】
jfaca.io.FileInputStream extends InputStream
作用:把硬盘文件中的数据,读取到内存中使用
构造方法:
FileInputStream(String name)
FileInputStream(File file)
参数:读取文件的数据源
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
int len =0;
FileInputStream fileInputStream = new FileInputStream("C:\\Desktop\\summer.txt");
while ((len = fileInputStream.read())!=-1){
System.out.print((char)len);
}
fileInputStream.close();
}
}
布尔表达式(len = fileInputStream.read())!=-1
1、fileInputStream.read():读取一个字节
2、len = fileInputStream.read():把读取到的字节赋值给变量len
3、(len = fileInputStream.read())!=-1:判断变量len是否不等于-1
字节输入流一次读取多个字节的方法
int read(byte[] b) 从输入流中读取一档数量的字节,并将其存储在缓冲区书中b中。
方法参数:byte[]的作用:存储每次读取到的多个字节,一般把数组长度定义为1024,或1024的整数倍
方法的返回值int:读取的有效字节个数
String类的构造方法:
String(byte[] bytes):把字节数组转换为字符串
String(byte[] bytes, int offset,int length)把字节数组的一部分转换为字符串;offset:数组的开始索引 length:转换的字节个数
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
byte[] bytes = new byte[1024];
int len =0;
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\forever\\Desktop\\新建文本文档.txt");
while ((len = fileInputStream.read(bytes))!=-1){
System.out.print(new String(bytes,0,len));
}
fileInputStream.close();
}
}
复制文件
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo01 {
public static void main(String[] args) throws IOException {
byte[] bytes = new byte[1024];
int len = 0;
//读取文件
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\forever\\Desktop\\新建文本文档.txt");
//写入文件
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\forever\\Desktop\\summer.txt",false);
while ((len = fileInputStream.read(bytes))!=-1){
System.out.println(new String(bytes,0 ,len));
fileOutputStream.write(bytes,0,len);
}
//关闭资源
fileOutputStream.close();
fileInputStream.close();
}
}