首页 > 代码库 > 文件输入/输出流

文件输入/输出流

 1.FileinputStream 与FileOutputStream类将文件读出与写入。

 2.FileReader和FileWriter将文件读出与写入。

  二者的区别:

     使用FileOutputStream类向文件中写入数据与使用FileinputStream类从文件中将内容读出来都存在一点不足,即这两个类都只有提供了对字节或字节数组的读取方法,由于汉子在文件中占用两个字节,如果使用字节流,读取不好可能会出现乱码的情况,此时采用字符流Reader或Writer类即可避免这种现象。

   FileReader和FileWriter字符流对应了FileinputStream 与FileOutputStream类,FileReader流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源文件中其余内容,直到源的末尾或流被关闭。

例1:

 1 import java.io.File;
 2 import java.io.FileInputStream;
 3 import java.io.FileOutputStream;
 4 
 5 public class FileTest3 {
 6      
 7     public static void main(String[] args) {
 8        File file = new File("D:/Sourcecode/Java/file/word1.txt");
 9        try{
10            FileOutputStream out = new FileOutputStream(file);
11            byte buy[]  ="风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。".getBytes();
12            out.write(buy);
13            out.close();
14        }catch(Exception e){
15            e.printStackTrace();
16        }
17        try{
18            FileInputStream inputStream = new FileInputStream(file);
19            byte byt[] = new byte[1024];
20            int len  =inputStream.read(byt);
21            System.out.print("文件中的信息是: "+ new String(byt,0,len));
22            inputStream.close();
23        }catch(Exception e){
24            e.printStackTrace();
25        }
26     }
27 
28 }

例2:

  

技术分享
  1 import java.awt.*;
  2 import java.awt.event.*;
  3 import java.io.*;
  4 
  5 import javax.swing.*;
  6 
  7 public class Ftest extends JFrame { // 创建类,继承Jframe类
  8     private JScrollPane scrollPane;
  9     private static final long serialVersionUID = 1L;
 10     private JPanel jContentPane = null; // 创建面板对象
 11     private JTextArea jTextArea = null; // 创建文本域对象
 12     private JPanel controlPanel = null; // 创建面板对象
 13     private JButton openButton = null; // 创建按钮对象
 14     private JButton closeButton = null; // 创建按钮对象
 15     
 16     private JTextArea getJTextArea() {
 17         if (jTextArea == null) {
 18             jTextArea = new JTextArea();
 19         }
 20         return jTextArea;
 21     }
 22     
 23     private JPanel getControlPanel() {
 24         if (controlPanel == null) {
 25             FlowLayout flowLayout = new FlowLayout();
 26             flowLayout.setVgap(1);
 27             controlPanel = new JPanel();
 28             controlPanel.setLayout(flowLayout);
 29             controlPanel.add(getOpenButton(), null);
 30             controlPanel.add(getCloseButton(), null);
 31         }
 32         return controlPanel;
 33     }
 34     
 35     private JButton getOpenButton() {
 36         if (openButton == null) {
 37             openButton = new JButton();
 38             openButton.setText("写入文件"); // 修改按钮的提示信息
 39             openButton
 40                     .addActionListener(new java.awt.event.ActionListener() {
 41                         // 按钮的单击事件
 42                         public void actionPerformed(ActionEvent e) {
 43                             // 创建文件对象
 44                             File file = new File("word.txt");
 45                             try {
 46                                 // 创建FileWriter对象
 47                                 FileWriter out = new FileWriter(file);
 48                                 // 获取文本域中文本
 49                                 String s = jTextArea.getText();
 50                                 out.write(s); // 将信息写入磁盘文件
 51                                 out.close(); // 将流关闭
 52                             } catch (Exception e1) {
 53                                 e1.printStackTrace();
 54                             }
 55                         }
 56                     });
 57         }
 58         return openButton;
 59     }
 60     
 61     private JButton getCloseButton() {
 62         if (closeButton == null) {
 63             closeButton = new JButton();
 64             closeButton.setText("读取文件"); // 修改按钮的提示信息
 65             closeButton
 66                     .addActionListener(new java.awt.event.ActionListener() {
 67                         // 按钮的单击事件
 68                         public void actionPerformed(ActionEvent e) {
 69                             File file = new File("word.txt"); // 创建文件对象
 70                             try {
 71                                 // 创建FileReader对象
 72                                 FileReader in = new FileReader(file);
 73                                 char byt[] = new char[1024]; // 创建char型数组
 74                                 int len = in.read(byt); // 将字节读入数组
 75                                 // 设置文本域的显示信息
 76                                 jTextArea.setText(new String(byt, 0, len));
 77                                 in.close(); // 关闭流
 78                             } catch (Exception e1) {
 79                                 e1.printStackTrace();
 80                             }
 81                         }
 82                     });
 83         }
 84         return closeButton;
 85     }
 86     
 87     public Ftest() {
 88         super();
 89         initialize();
 90     }
 91     
 92     private void initialize() {
 93         this.setSize(300, 200);
 94         this.setContentPane(getJContentPane());
 95         this.setTitle("JFrame");
 96     }
 97     
 98     private JPanel getJContentPane() {
 99         if (jContentPane == null) {
100             jContentPane = new JPanel();
101             jContentPane.setLayout(new BorderLayout());
102             jContentPane.add(getScrollPane(), BorderLayout.CENTER);
103             jContentPane.add(getControlPanel(), BorderLayout.SOUTH);
104         }
105         return jContentPane;
106     }
107     
108     public static void main(String[] args) { // 主方法
109         Ftest thisClass = new Ftest(); // 创建本类对象
110         thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
111         thisClass.setVisible(true); // 设置该窗体为显示状态
112     }
113     /**
114      * @return
115      */
116     protected JScrollPane getScrollPane() {
117         if (scrollPane == null) {
118             scrollPane = new JScrollPane();
119             scrollPane.setViewportView(getJTextArea());
120         }
121         return scrollPane;
122     }
123 }
View Code

 

文件输入/输出流