用缓冲流的方式拷贝最高效,下面给出一个例子:- /*
- 字符流:
- FileReader
- FileWriter
- BufferedReader
- BufferedWriter
- 字节流:
- 两个基类:
- InputStream(读) OutputStream(写)
- 需求:想要操作图片数据,这时候就要用到字节流
- */
- import java.io.*;
- class FileStream{
- public static void main(String []args) throws IOException
- {
- // writeFile();
- // readFile_1();
- // readFile_2();
- readFile_3();
- }
- public static void readFile_1() throws IOException
- {
- FileInputStream fis=new FileInputStream("fos.txt");
-
- int ch=0;
- while((ch=fis.read())!=-1)
- {
- System.out.println((char)ch);
- }
- fis.close();
- }
-
- public static void readFile_2() throws IOException
- {
- FileInputStream fis=new FileInputStream("fos.txt");
-
- //以这种方式为主,这是最好,最优化的方式
- byte[] buf=new byte[1024];
- int len=0;
- while((len=fis.read(buf))!=-1)
- {
- System.out.println(new String(buf,0,len));
- }
-
- fis.close();
- }
-
- public static void readFile_3() throws IOException
- {
- FileInputStream fis=new FileInputStream("fos.txt");
-
- // int num=fis.available();
-
- //这种方式要慎用,数据不是太大的话,可以这样使用
- byte[] buf=new byte[fis.available()];//定义一个刚刚好的缓冲区,不用再循环了
-
- fis.read(buf);
-
- // System.out.println("num="+num);
- System.out.println(new String(buf));
-
-
- fis.close();
- }
-
- public static void writeFile() throws IOException
- {
- FileOutputStream fos=new FileOutputStream("fos.txt");
-
- //将字符串变为字节数组
- fos.write("abcde".getBytes());
-
- fos.close();
-
- }
- }
复制代码 希望对你有所帮助 |