package com.io.bytes;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStream_FileOutPutStream {
public static void main(String[] args)throws IOException {
//fileOutputStream();//字节写入数据
//read_method1();//单个字节读取数据
//read_method2();//字节数组读取数据
read_method3();//利用FileInPutStream类中的available()方法获取字节数,直接建立相应的字节数组
}
/*
* 建立缓冲区,即建立字节数组,读取数据,循环读取数据
* 利用FileInPutStream类中的available()方法,该方法返回数据具体多少个字节
*/
public static void read_method3() throws IOException{
FileInputStream fis=new FileInputStream(new File("g:\\java\\yyy.txt"));
byte[] s=new byte[fis.available()];//利用返回的具体字节数直接建立好长度和数据相等的字节数组,这样就不用循环了
fis.read(s);//这样写简单。但当数据量大过内存时但是这样容易使内存溢出,所以不建议这样,最好用字节数组定义1024的整数倍
System.out.println(new String(s));
fis.close();
}
/*
* 建立缓冲区,即建立字节数组,读取数据,循环读取数据
*/
public static void read_method2() throws IOException{
FileInputStream fis=new FileInputStream(new File("g:\\java\\yyy.txt"));
int num=0;
byte[] s=new byte[1024];//注意这里最好是1024的整数倍,有利于读取
while(-1!=(num=fis.read(s))){
System.out.println(new String(s,0,num));//注意这里要取的值是到num的值
}
fis.close();
}
/*
* 读取数据,循环读取数据
*/
public static void read_method1() throws IOException{
FileInputStream fis=new FileInputStream(new File("g:\\java\\yyy.txt"));
int num=0;
while(-1!=(num=fis.read())){
System.out.println((char)num);
}
fis.close();
}
/*
* 字节流写入数据,
* 注意,字节流写入数据不用刷新,会直接写入,但要关闭流
*/
public static void fileOutputStream()throws IOException {
FileOutputStream fos=new FileOutputStream(new File("g:\\java\\yyy.txt"));
fos.write("abcde".getBytes());
fos.close();
}
}
黑马程序员——FileINPutStream,FileOutPutStream介绍
最新推荐文章于 2023-02-25 21:52:54 发布