阅读更多
1.基本输入输出流类
在java.io包中,基本输入输出流类可按读写数据的不同分为两种:字节流和字符流
字节流:读写字节类型的数据(包括ASCII表中的字符)。字节流类可以分为表示输入流的InputStream类及其子类,表示输出流的OutputStream类及其子类。
字符流:读写Unicode字符。表示输入流的Reader类及其子类,表示输出流的Writer类及其子类。
2.文件的输入输出
Java语言的java.io包中的File类是专门用来管理磁盘文件和目录的。每个File类的对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息,如文件或目录的名称、文件的长度、目录中所含文件的个数等。调用File类的方法可以完成对文件或目录的常用管理操作,如创建文件或目录,删除文件或目录,查看文件的相关信息等。
FileInputStream类用于读取文件中的字节数据的字节文件输入流类;
FileOutputStream类用于向文件写入字节数据的字节文件输出流类;
FileReader类和FileWriter类用于读取文件和向文件写入字符数据。
3.练习:使用字节流和缓冲流读取一个100M的文件,测试两者的区别.
缓冲流:
package IO流;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedReader {
/**
* @param args
*/
public static void main(String[] args) {
BufferedReader br=new BufferedReader();
br.bufferedTest("pictures/1.jpg","pictures/1.bak");
}
private void bufferedTest(String path,String newpath) {
//实例化一个FileInputStream和BufferedInputStream类的对象
try {
FileInputStream fis = new FileInputStream(path);
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(newpath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
//获取文件字节的总数
int length = bis.available();
//根据总数定义一个byte数组
byte [] array = new byte[length];
bis.read(array);
bos.write(array);
bos.flush();
System.out.print(new String(array));
//关闭流
bis.close();
fis.close();
bos.close();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
字节流:
package IO流;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileReader {
/**
* @param args
*/
public static void main(String[] args) {
FileReader fr=new FileReader();
fr.fileTest("pictures/1.jpg","pictures/1.bak");
}
/**
* file流的测试类
* @param path路径
*/
public void fileTest(String path,String newPath){
try {
//实例化一个FileInputStream类的对象
FileInputStream fis = new FileInputStream(path);
FileOutputStream fos = new FileOutputStream(newPath);
//获取文件字节的总数
int length = fis.available();
//根据总数定义一个byte数组
byte [] array = new byte[length];
fis.read(array);
fos.write(array);
System.out.print(new String(array));
//关闭流
fis.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}