文章目录
字节流抽象类
- 字节流的父类(抽象类)
- InputStream
- 字节输入流的所有类的超类。
- OutputStream
- 这个抽象类是表示字节输出流的所有类的超类。 输出流接收输出字节并将其发送到某个接收器。
FileInputStream
构造方法
- FileInputStream(File file)
通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。 - FileInputStream(FileDescriptor fdObj)
创建 FileInputStream通过使用文件描述符 fdObj ,其表示在文件系统中的现有连接到一个实际的文件。 - FileInputStream(String name)
通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
常用方法
read()
public int read()
功能:从输入流读取数据的下一个字节。若已经到达流的末尾,返回值是 -1 。
public static void main(String[] args) throws IOException {
System.out.println("----------单个字节读取-----------");
FileInputStream filIn = new FileInputStream("D:\\JavaCode\\JavaSE\\zz.txt");//括号内为文件的地址
int date = 0;
while ((date = filIn.read())!= -1){ //若已经到达流的末尾,返回值是 -1
System.out.print((char) date);
}
filIn.close();
----------单个字节读取-----------
xyzabcdef
Process finished with exit code 0
read(byte[] b)
public int read(byte b[])
功能:从输入流读取一些字节数,并将它们存储到缓冲区 b 。
public static void main(String[] args) throws IOException {
System.out.println("----------一次性多个字节读取-----------");
FileInputStream filIn = new FileInputStream("D:\\JavaCode\\JavaSE\\zz.txt");
byte[] b = new byte[6]; //byte的长度为缓存区
int count = filIn.read(b); //返回值为读取长度
System.out.println(new String (b)); //将 byte型数组b 转为 String型
System.out.println("读取的长度为:"+count);
int count2 = filIn.read(b);
System.out.println(new String (b));
System.out.println("读取的长度为:"+count2);
filIn.close();
----------一次性多个字节读取-----------
xyzabc
读取的长度为:6
defabc
读取的长度为:3
Process finished with exit code
- 通过输出可以发现结果是覆盖的,我们可以在转String的时候仅输出有效的部分,上可修改为
System.out.println(new String (b,0,count2));
read(byte[] b, int off, int len)
public int read(byte b[], int off, int len)
功能:从输入流在 off 位置开始读取最多 len字节的数据到一个字节数组。
public static void main(String[] args) throws IOException {
System.out.println("----------使用read(byte[] b, int off, int len) -----------");
FileInputStream filIn = new FileInputStream("D:\\JavaCode\\JavaSE\\zz.txt");
byte[] b = new byte[8];
int count = filIn.read(b,2,3);
System.out.println(new String(b)); //将 byte型数组b 转为 String型
System.out.println("读取的长度为:"+count);
filIn.close();
----------使用read(byte[] b, int off, int len) -----------
xyz
读取的长度为:3
Process finished with exit code 0
close()
public void close()
功能:关闭此输入流并释放与流相关联的任何系统资源。
FileOutputStream
构造方法
- FileOutputStream(File file)
以写入由指定的 File对象表示的文件。 - FileOutputStream(File file, boolean append)
以写入由指定的 File对象表示的文件。 - FileOutputStream(FileDescriptor fdObj)
以写入指定的文件描述符,表示与文件系统中实际文件的现有连接。 - FileOutputStream(String name)
以指定的名称写入文件。 - FileOutputStream(String name, boolean append)
以指定的名称写入文件 append默认false 即覆盖原文件 为true则在文件内容后追加
常用方法
write(int b)
public void write(int b)
功能:将指定的字节写入此文件输出流。
public static void main(String[] args) throws Exception{
FileOutputStream fil = new FileOutputStream("D:\\JavaCode\\JavaSE\\zzz.txt");//不存在则会创建
int b = 97;
fil.write(b);
fil.close();
}
查看zzz.txt内容
a
write(byte[] b) & write(byte[] b, int off, int len)
public void write(byte b[])
public void write(byte b[], int off, int len)
功能:将 b.length个字节从指定的字节数组写入此文件输出流。
从下标 off 开始写入 len 个数据写入此文件输出流。
public static void main(String[] args) throws Exception{
FileOutputStream fil = new FileOutputStream("D:\\JavaCode\\JavaSE\\zzz.txt");//不存在则会创建
byte[] b = new byte[10];
b[0] = 13; //ascll码表 13为CR 回车
b[1] = 14;
b[2] = 15;
fil.write(b[1]);
fil.write(b,0,3);
fil.close();
}
查看zzz.txt内容
其他常用的write() 例子
public static void main(String[] args) throws Exception{
FileOutputStream fil = new FileOutputStream("D:\\JavaCode\\JavaSE\\zzz.txt");//不存在则会创建
fil.write("\r".getBytes());//写入换行 windows使用“\n”或者“\r” Linux "\n" Mac "\r"
String str = "HelloWorld";
fil.write(str.getBytes());
fil.write("\n".getBytes());
String str1 = "湖南长沙";
fil.write(str1.getBytes());
fil.close();
}
close()
public void close()
功能:关闭此文件输出流并释放与此流相关联的任何系统资源。