zoukankan      html  css  js  c++  java
  • io流之写文件

      用Java程序写文件有多种方式,对于不同类型的数据,有不同的写方法。写文件的关键技术点如下:

       1.FileOutputStream打开文件输出流,通过write方法以字节为单位写文件,是写文件最通用的方法,能写任何类型的文件,特别适合写二进制数据文件。

       2.OutputStreamWriter打开文件输出流,通过write方法以字符为单位写文件,能够将字符数组和字符串写入文件。

       3.PrintWriter打开文件输出流,通过print和println方法将字符串写入文件,与System.out的用法相似,常用于写格式化文本。

      通过以上各种文件输出流将数据写入文件后,需要调用close方法关闭文件输出流。

    实例如下:

     1 package book.io;
     2 
     3 import java.io.File;
     4 import java.io.FileNotFoundException;
     5 import java.io.FileOutputStream;
     6 import java.io.IOException;
     7 import java.io.OutputStream;
     8 import java.io.OutputStreamWriter;
     9 import java.io.PrintWriter;
    10 import java.io.Writer;
    11 
    12 public class WriteToFile {
    13     //以字节为单位写文件,适合于写二进制文件,如图片等
    14     public static void writeFileByBytes(String fileName){
    15         File file = new File(fileName);
    16         OutputStream out = null;
    17         try {
    18             out = new FileOutputStream(file);
    19             String content = "文件内容:
    1,The First line;
    2,The Second line";
    20             byte[] bytes = content.getBytes();//读取文件输出流中的字节
    21             //写入文件
    22             out.write(bytes);
    23             System.out.println("写文件" + file.getAbsolutePath() + "成功!");
    24         } catch (IOException e) {
    25             System.out.println("写文件" + file.getAbsolutePath() + "失败!");
    26             e.printStackTrace();
    27         }finally{
    28             if(out != null){
    29                 try {
    30                     out.close();
    31                 } catch (IOException e) {
    32                     e.printStackTrace();
    33                 }
    34             }
    35         }
    36     }
    37     //以字符为单位写文件
    38     public static void writeFileByChars(String fileName){
    39         File file = new File(fileName);
    40         Writer writer = null;
    41         try {
    42             writer = new OutputStreamWriter(new FileOutputStream(file));
    43             String content = "文件内容:
    1,The first line;
    2,The second line";
    44             writer.write(content);
    45             System.out.println("写文件" + file.getAbsolutePath() + "成功!");
    46         } catch (IOException e) {
    47             System.out.println("写文件" + file.getAbsolutePath() + "失败!");
    48             e.printStackTrace();
    49         }finally{
    50             if(writer != null){
    51                 try {
    52                     writer.close();
    53                 } catch (IOException e) {
    54                     e.printStackTrace();
    55                 }
    56             }
    57         }
    58     }
    59     //以行为单位写文件
    60     public static void writeFileByLines(String fileName){
    61         File file = new File(fileName);
    62         PrintWriter writer = null;
    63         try {
    64             writer = new PrintWriter(new FileOutputStream(file));
    65             writer.println("文件内容:");
    66             //写入各种基本类型数据
    67             writer.println(true);
    68             writer.print(155);
    69             writer.println();
    70             writer.flush();
    71             System.out.println("写文件" + file.getAbsolutePath() + "成功!");
    72         } catch (FileNotFoundException e) {
    73             System.out.println("写文件" + file.getAbsolutePath() + "失败!");
    74             e.printStackTrace();
    75         }finally{
    76             if(writer != null){
    77                 writer.close();
    78             }
    79         }
    80     }
    81     public static void main(String[] args){
    82         String fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp1.txt";
    83         WriteToFile.writeFileByBytes(fileName);
    84         fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp2.txt";
    85         WriteToFile.writeFileByChars(fileName);
    86         fileName = "C:/Users/Admin/Desktop/CAI/20160720/temp3.txt";
    87         WriteToFile.writeFileByLines(fileName);
    88     }
    89 }

    结果:

    写文件C:UsersAdminDesktopCAI20160720 emp1.txt成功!
    写文件C:UsersAdminDesktopCAI20160720 emp2.txt成功!
    写文件C:UsersAdminDesktopCAI20160720 emp3.txt成功!

    分析:1.用writeFileByBytes方法以字节为单位写数据到文件。使用了字节输出流FileOutputStream类,通过write方法可以一次写入一个字节,也可以写入一个字节数组

       2.writeFileByChars方法以字符为单位写数据到文件。使用了字符输出流OutputStreamWriter类,将FileOutStream对象封装成OutputStream对象,再调用write方法将字符数据写入到文件中,通过write方法可以一次写入一个字符、一个字符数组或者一个字符串。

      3.writeFileByLines方法以字符串为单位写数据到文件。使用了PrintWriter类,将FileOutputWriter对象封装成PrintWriter对象,再调用print或者println方法将字符串写入到文件,其中println在写入字符串后进行换行,其用法与System.out进行标准输出相似。

  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/czl362326/p/5693141.html
Copyright © 2011-2022 走看看