首页 > 代码库 > 文件输入/输出流
文件输入/输出流
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 }
文件输入/输出流
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。