字节流是把数据转换成字节(byte)向文件输入输出。
类InputStream和类OutputStream是表示输入输出字节流的所有类的超类。
类FileInputStream和类FileOutputStream是字节输入输出常用的类。
write()方法和read()方法则是输入和输出的基本方法。
如:
write(int b)和read()
一个一个的字节进行输入输出
package com.test1;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileFoo {
public static void main(String[] args)throws IOException {
FileOutputStream fos = new FileOutputStream("test1.txt"); //create FileOutputStream object
fos.write('a'); //Write a data to a file
fos.write('b'); //Write a data to a file
fos.write('c'); //Write a data to a file
fos.close();
FileInputStream fis = new FileInputStream("test1.txt"); //create FileInputStream object
int i;
while((i=fis.read())!=-1){ //Judge whether the file is empty, if it is empty return -1
char c = (char)i;
System.out.print(c);
}
fis.close(); //close file
}
}
write(byte [] buf)和read(byte [] buf)
一段字节进行输入输出,一次性读取时字节数组的长度要足够大
package com.test1;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileRW {
public static void main(String[] args)throws IOException {
FileOutputStream fos = new FileOutputStream("test.txt"); //create FileOutputStream object
String str = "abcd123";
byte [] buf = str.getBytes();
fos.write(buf); //Write data to a file
fos.close(); //close file
FileInputStream fis = new FileInputStream("test.txt"); //create FileInputStream object
byte [] buff = new byte[50];
fis.read(buff); //One time input to an array of bytes
String str1 = new String(buff);
System.out.println(str1);
fis.close(); //close file
}
}
write(byte [] buf, int off, int len)和read(byte [] ,int off,int len)
从字节数组中读入len个字节到文件中或者从文件中读入len个字节到字节数组中
package com.test1;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileRW {
public static void main(String[] args)throws IOException {
FileInputStream fis = new FileInputStream("test1_new.txt"); //create FileInputStream object
FileOutputStream fos = new FileOutputStream("test.txt"); //create FileOutputStream object
byte [] buff = new byte[50];
int b;
while((b=fis.read(buff,0,buff.length))!=-1) //Judge whether the file is empty, if it is empty return -1
{
fos.write(buff, 0, b); //Write data to a file
fos.flush();
}
fis.close(); //close file
fos.close(); //close file
}
}
类BufferedInputStream和类BufferedOutStream这两个类为字节流提供了缓冲输入的操作,
即数据先从文件或数组中进入到缓冲区,然后写入文件或读入数组。
package com.test1;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class bybufferedinputstrem {
public static void main(String[] args) throws IOException{
FileInputStream fis = new FileInputStream("Wildlife.wmv");
//create BufferedInputStream object,fis is a FileInputStream object
BufferedInputStream bis = new BufferedInputStream(fis,100000);
FileOutputStream fos = new FileOutputStream("1.wmv");
//create BufferedOutputStream object,fos is a FileOutputStream object
BufferedOutputStream bos = new BufferedOutputStream(fos,100000);
byte [] buf = new byte[1000];
int i;
while((i=bis.read(buf,0,buf.length))!=-1){
bos.write(buf,0,i);
}
bos.flush(); //flush the buffer
bos.close();
fos.close();
bis.close();
fis.close();
}
}