IO流
文件字节流
- FileInputStream通过字节方式读取文件,适合读所有类型的文件(图像、 视频、文本文件等),Java也提供了FileReader专门读取文本文件.
- FileOutputStream通过字节的方式写数据到文件中,适合所有类型的文件,Java也提供了FileWriter专门写如文本文件。
上次说了OutputStream,这次说InputStream。
InputStream
之间已经说过了字符是由字节加上编码组成的,那么也就是说不仅仅局限与数据文件,还可以是图片、视频、音频等等,因为他们本质都是字节数据。
先看一个读取文本数据的例子:
import java.io.File;
import java.io.FileInputStream;
public class FileInputDome {
public FileInputDome(){
try {
FileInputStream f=new FileInputStream("bb/aa.txt");//创建流对象以及文件对象,并将流管道接到文件上
int i=0;
int b=f.read(); //读取文件中的数据
while(b!=-1) //当读到-1时代表读取结束
{
System.out.println((char)b);
b=f.read();
i++;
}
System.out.println("文件字节数为:"+i);
f.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new FileInputDome();
}
}
这个程序的作用便是读取数据将其输出然后输出字节个数,运行结果如图:
再来看一个读取二进制文件的例子,这是一个读取图片的程序:
import java.io.FileInputStream;
public class FileOutputDome2 {
public static void main(String[] args) {
FileInputStream f=null;
try {
f=new FileInputStream("F:/JAVA/IO/123.jfif");
int i=0;
while((i=f.read())!=-1) {
System.out.println(i);
}
}catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(f !=null)
{
f.close();
}
}catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
这就是将一个图片用二进制数据的形式输出来:
这解释了上面的说明。