码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA学习--文件流FileInputStream和FileOutputStream操作

时间:2015-03-03 23:32:39      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

 * 1.流的分类:
 * 按照数据流向的不同:输入流  输出流
 * 按照处理数据的单位的不同:字节流  字符流(处理的文本文件)
 * 按照角色的不同:节点流(直接作用于文件的)  处理流
 *
 * 2.IO的体系
 * 抽象基类            节点流(文件流)                                缓冲流(处理流的一种)
 * InputStream        FileInputStream            BufferedInputStream
 * OutputStream        FileOutputStream        BufferedOutputStream
 * Reader            FileReader                BufferedReader
 * Writer            FileWriter                BufferedWriter

 

 1     // 从硬盘存在的一个文件中,读取其内容到程序中。使用FileInputStream
 2     // 要读取的文件一定要存在。否则抛FileNotFoundException
 3     @Test
 4     public void testFileInputStream1() throws Exception {
 5         // 1.创建一个File类的对象。
 6         File file = new File("hello.txt");
 7         // 2.创建一个FileInputStream类的对象
 8         FileInputStream fis = new FileInputStream(file);
 9         // 3.调用FileInputStream的方法,实现file文件的读取。
10         /*
11          * read():读取文件的一个字节。当执行到文件结尾时,返回-1
12          */
13         // int b = fis.read();
14         // while(b != -1){
15         // System.out.print((char)b);
16         // b = fis.read();
17         // }
18         int b;
19         while ((b = fis.read()) != -1) {
20             System.out.print((char) b);
21         }
22         // 4.关闭相应的流
23         fis.close();
24     }
 1     // 使用try-catch的方式处理如下的异常更合理:保证流的关闭操作一定可以执行
 2     @Test
 3     public void testFileInputStream2() {
 4         // 2.创建一个FileInputStream类的对象
 5         FileInputStream fis = null;
 6         try {
 7             // 1.创建一个File类的对象。
 8             File file = new File("hello.txt");
 9             fis = new FileInputStream(file);
10             // 3.调用FileInputStream的方法,实现file文件的读取。
11             int b;
12             while ((b = fis.read()) != -1) {
13                 System.out.print((char) b);
14             }
15         } catch (IOException e) {
16             e.printStackTrace();
17         } finally {
18             // 4.关闭相应的流
19             if (fis != null) {
20                 try {
21                     fis.close();
22                 } catch (IOException e) {
23                     // TODO Auto-generated catch block
24                     e.printStackTrace();
25                 }
26             }
27         }
28     }
 1     @Test
 2     public void testFileInputStream3() { // abcdefgcde
 3         FileInputStream fis = null;
 4         try {
 5             File file = new File("hello.txt");
 6             fis = new FileInputStream(file);
 7             byte[] b = new byte[5];// 读取到的数据要写入的数组。
 8             int len;// 每次读入到byte中的字节的长度
 9             while ((len = fis.read(b)) != -1) {
10                 // for (int i = 0; i < len; i++) {
11                 // System.out.print((char) b[i]);
12                 // }
13                 String str = new String(b, 0, len);
14                 System.out.print(str);
15             }
16         } catch (IOException e) {
17             e.printStackTrace();
18         } finally {
19             if (fis != null) {
20                 try {
21                     fis.close();
22                 } catch (IOException e) {
23                     // TODO Auto-generated catch block
24                     e.printStackTrace();
25                 }
26 
27             }
28 
29         }
30     }
 1     // FileOutputStream
 2     @Test
 3     public void testFileOutputStream() {
 4         // 1.创建一个File对象,表明要写入的文件位置。
 5         // 输出的物理文件可以不存在,当执行过程中,若不存在,会自动的创建。若存在,会将原有的文件覆盖
 6         File file = new File("hello2.txt");
 7         // 2.创建一个FileOutputStream的对象,将file的对象作为形参传递给FileOutputStream的构造器中
 8         FileOutputStream fos = null;
 9         try {
10             fos = new FileOutputStream(file);
11             // 3.写入的操作
12             fos.write(new String("I love China!").getBytes());
13         } catch (Exception e) {
14             e.printStackTrace();
15         } finally {
16             // 4.关闭输出流
17             if (fos != null) {
18                 try {
19                     fos.close();
20                 } catch (IOException e) {
21                     // TODO Auto-generated catch block
22                     e.printStackTrace();
23                 }
24             }
25         }
26     }
 1     // 从硬盘读取一个文件,并写入到另一个位置。(相当于文件的复制)
 2     @Test
 3     public void testFileInputOutputStream() {
 4         // 1.提供读入、写出的文件
 5         File file1 = new File("C:\\Users\\shkstart\\Desktop\\1.jpg");
 6         File file2 = new File("C:\\Users\\shkstart\\Desktop\\2.jpg");
 7         // 2.提供相应的流
 8         FileInputStream fis = null;
 9         FileOutputStream fos = null;
10         try {
11             fis = new FileInputStream(file1);
12             fos = new FileOutputStream(file2);
13             // 3.实现文件的复制
14             byte[] b = new byte[20];
15             int len;
16             while ((len = fis.read(b)) != -1) {
17                 // fos.write(b);//错误的写法两种: fos.write(b,0,b.length);
18                 fos.write(b, 0, len);
19             }
20         } catch (Exception e) {
21             e.printStackTrace();
22         } finally {
23             if (fos != null) {
24                 try {
25                     fos.close();
26                 } catch (IOException e) {
27                     e.printStackTrace();
28                 }
29             }
30             if (fis != null) {
31                 try {
32                     fis.close();
33                 } catch (IOException e) {
34                     e.printStackTrace();
35                 }
36             }
37 
38         }
39     }
 1     // 实现文件复制的方法
 2     public void copyFile(String src, String dest) {
 3         // 1.提供读入、写出的文件
 4         File file1 = new File(src);
 5         File file2 = new File(dest);
 6         // 2.提供相应的流
 7         FileInputStream fis = null;
 8         FileOutputStream fos = null;
 9         try {
10             fis = new FileInputStream(file1);
11             fos = new FileOutputStream(file2);
12             // 3.实现文件的复制
13             byte[] b = new byte[1024];
14             int len;
15             while ((len = fis.read(b)) != -1) {
16                 // fos.write(b);//错误的写法两种: fos.write(b,0,b.length);
17                 fos.write(b, 0, len);
18             }
19         } catch (Exception e) {
20             e.printStackTrace();
21         } finally {
22             if (fos != null) {
23                 try {
24                     fos.close();
25                 } catch (IOException e) {
26                     e.printStackTrace();
27                 }
28             }
29             if (fis != null) {
30                 try {
31                     fis.close();
32                 } catch (IOException e) {
33                     e.printStackTrace();
34                 }
35             }
36 
37         }
38     }
 1     @Test
 2     public void testCopyFile(){
 3         long start = System.currentTimeMillis();
 4 //        String src = "C:\\Users\\shkstart\\Desktop\\1.avi";
 5 //        String dest = "C:\\Users\\shkstart\\Desktop\\2.avi";
 6         String src = "dbcp.txt";
 7         String dest = "dbcp2.txt";
 8         copyFile(src,dest);
 9         long end = System.currentTimeMillis();
10         System.out.println("花费的时间为:" + (end - start));//3198
11     }

 

JAVA学习--文件流FileInputStream和FileOutputStream操作

标签:

原文地址:http://www.cnblogs.com/zhangfan94/p/4312076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!