构建文件输出流

有输入流,那么同样就有输出流。首先输出流同样有很多异常,全部使用try-catch来处理,看代码:

 1 package com.hw.file0205;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 
 7 public class TestOutputStream {
 8     public static void main(String[] args) {
 9         FileOutputStream output = null;
10         try {
11             output = new FileOutputStream("F://骚操作//demo02_test.txt");
12             //即便文件不存在也没事,因为系统会为我们创建一个新文件。
13             output.write('E');
14             output.write('v');
15             output.write('a');
16             output.write('n');
17             //这样的操作是覆盖性质的,也就是说会覆盖掉之前文件里面的内容,不管有没有。
18         } catch (IOException e) {
19             // TODO Auto-generated catch block
20             e.printStackTrace();
21         }finally{
22             try {
23                 if(output != null){
24                     output.close();
25                 }
26             } catch (IOException e) {
27                 // TODO Auto-generated catch block
28                 e.printStackTrace();
29             }
30         }
31         
32     }
33 }

 如果会覆盖的话,那这样会很不方便,我如果不想覆盖要怎么办?很简单,直接在后面加个true就可以了,因为它是默认为false的,加了个true的话就是“追加”了。

或者,也可以构造一个file对象,这种方法也是可以直接在后面加true变成“追加”方式的。来看代码:

 1 package com.hw.file0205;
 2 
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public class TestOutputStream {
 9     public static void main(String[] args) {
10         FileOutputStream output = null;
11         FileOutputStream file = null;
12         try {
13             output = new FileOutputStream("F://骚操作//demo02_test.txt",true);
14             //即便文件不存在也没事,因为系统会为我们创建一个新文件。
15             output.write('E');
16             output.write('v');
17             output.write('a');
18             output.write('n');
19             //这样的操作是覆盖性质的,也就是说会覆盖掉之前文件里面的内容,不管有没有。
20             
21             file = new FileOutputStream(new File("F://骚操作//demo02_testagain.txt"),true);
22             file.write('E');
23             file.write('v');
24             file.write('a');
25             file.write('n');
26             file.write(' ');
27             file.write('i');
28             file.write('s');
29             
30         } catch (IOException e) {
31             // TODO Auto-generated catch block
32             e.printStackTrace();
33         }finally{
34             try {
35                 if(output != null){
36                     output.close();
37                 }
38             } catch (IOException e) {
39                 // TODO Auto-generated catch block
40                 e.printStackTrace();
41             }
42         }
43         
44     }
45 }

    

 到目前为止,上面这些方法都是字节写入,我们也可以利用数组:

 1 package com.hw.file0205;
 2 
 3 import java.io.File;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public class TestOutputStream {
 9     public static void main(String[] args) {
10         FileOutputStream output = null;
11         
12         try {
13             output = new FileOutputStream("F://骚操作//demo02_test.txt");
14             String str = "你好,世界!Hello World!こんにちは、世界!";
15             output.write(str.getBytes());
16             
17         } catch (IOException e) {
18             // TODO Auto-generated catch block
19             e.printStackTrace();
20         }finally{
21             try {
22                 if(output != null){
23                     output.close();
24                 }
25             } catch (IOException e) {
26                 // TODO Auto-generated catch block
27                 e.printStackTrace();
28             }
29         }
30         
31     }
32 }

 

 调用getBytes方法,就可以把字符串变成数组了,然后再进行写入。

posted @ 2021-02-18 22:54  EvanTheBoy  阅读(90)  评论(0)    收藏  举报