今日学习内容总结
- 字节流的输入及输出
IO流
IO的分类
根据数据的流向分为:输入流和输出流。
-
输入流 :把数据从
其他设备
上读取到内存
中的流。 -
输出流 :把数据从
内存
中写出到其他设备
上的流。
格局数据的类型分为:字节流和字符流。
- 字节流 :以字节为单位,读写数据的流。
- 字符流 :以字符为单位,读写数据的流。
字节流
字节输出流(OutputStream)
OutputStream成员方法:
-
public void close()
:关闭此输出流并释放与此流相关联的任何系统资源。 -
public void flush()
:刷新此输出流并强制任何缓冲的输出字节被写出。 -
public void write(byte[] b)
:将 b.length字节从指定的字节数组写入此输出流。 -
public void write(byte[] b, int off, int len)
:从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。 -
public abstract void write(int b)
:将指定的字节输出流。
close方法,当完成流的操作时,必须调用此方法,释放系统资源。
FileOutputStream类
java.io.FileOutputStream
类是文件输出流,用于将数据写出到文件。
构造方法
-
public FileOutputStream(File file)
:创建文件输出流以写入由指定的 File对象表示的文件。 -
public FileOutputStream(String name)
: 创建文件输出流以指定的名称写入文件。
当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有这个文件,会创建该文件。如果有这个文件,会清空这个文件的数据。
相关代码:
import java.io.FileOutputStream;
import java.io.IOException;
public class demo01 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("D:\\a.txt");
fos.write(97);
fos.close();
}
}
写出字节:write(int b)
方法,每次可以写出一个字节数据
写出字节数组:write(byte[] b)
,每次可以写出数组中的数据
写出指定长度字节数组:write(byte[] b, int off, int len)
,每次写出从off索引开始,len个字节
数据追加续写
-
public FileOutputStream(File file, boolean append)
: 创建文件输出流以写入由指定的 File对象表示的文件。 -
public FileOutputStream(String name, boolean append)
: 创建文件输出流以指定的名称写入文件。
这两个构造方法,参数中都需要传入一个boolean类型的值,true
表示追加数据,false
表示清空原有数据。这样创建的输出流对象,就可以指定是否追加续写了
代码示例:
import java.io.FileOutputStream;
import java.io.IOException;
public class demo02 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("D:\\HelloWorld.txt",true);
// fos.write("Hello".getBytes());//第一次执行代码
fos.write("World".getBytes());//第二次执行的代码
fos.close();
}
}
数据换行输出
只需在需要换行处添加"\r\n"写入即可
public class Demo03 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("D:\\b.txt",true);
byte[] bytes = {64,65,66,67,68,69,70,71,72};
for (byte aByte : bytes) {
fos.write(aByte);
fos.write("\r\n".getBytes());
}
fos.close();
}
}
- 回车符
\r
和换行符\n
:
- 回车符:回到一行的开头(return)。
- 换行符:下一行(newline)。
- 系统中的换行:
- Windows系统里,每行结尾是
回车+换行
,即\r\n
;- Unix系统里,每行结尾只有
换行
,即\n
;- Mac系统里,每行结尾是
回车
,即\r
。从 Mac OS X开始与Linux统一。
字节输入流【InputStream】
InputStream的成员方法:
-
public void close()
:关闭此输入流并释放与此流相关联的任何系统资源。 -
public abstract int read()
: 从输入流读取数据的下一个字节。 -
public int read(byte[] b)
: 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。
FileInputStream类
构造方法:
-
FileInputStream(File file)
: 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。 -
FileInputStream(String name)
: 通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
读取字节数据
-
读取字节:
read
方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回-1
-
使用字节数组读取:
read(byte[] b)
,每次读取b的长度个字节到数组中,返回读取到的有效字节个数,读取到末尾时,返回-1
使用步骤:
- 创建FileInputStream对象,构造方法中绑定要读取的对象
- 使用read方法读取文件
- 释放资源
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D:\\a.txt");
int data=0;
while((data=fis.read())!=-1){
System.out.println(data);
}
fis.close();
}
网友评论