1. 程式人生 > >JAVA入門到精通-第46講-IO程式設計.記事本開發

JAVA入門到精通-第46講-IO程式設計.記事本開發

IO程式設計-記事本開發 fis.read(bytes) 位元組陣列: 通過fis把檔案裡面的1800個字元,儘可能的讀, 最多讀1024個。記錄一下,0-1024記錄到bytes; 再去讀的首,fis.read試圖1024個位元組,不夠了, 第二次讀了776個,n=776;(0,776); 第三次,又準備讀1024,這次一個讀不到,返回-1; 退出迴圈;
JMenuBar 選單條是一個JMenuBar; JMenu File是一個JMenu;
JMenuItem 下面這些選項是JMenuItem;

一層放一層的:

//點選開啟,ActionListener,重寫方法 actionPerformed //建立檔案選擇元件
//swing元件---JFileChooser setDialogTitle("請選擇檔案...") 對話方塊:
跳出來的元件JAVA設計者已經做好了; //得到相關檔案的路徑: getSelectedFile().getAbsolutePath(); 記事本讀取: br.readLine( ) 
//儲存-save addActionListener(this); setActionCommand("save");

//儲存檔案到何處:
//準備寫入到指定檔案即可-write出去:
//關閉檔案流

---------------------------------------

java檔案程式設計--常用io

常用io--檔案字元流

案例[Io05.java](檔案字元輸入、輸出流,目的:FileReaderFileWriter)讀取一個檔案並寫入到另一個檔案中char[]來中轉

40   1
/**
2
 * File類的基本用法
3
 * io流--檔案字元流,只能用於完全為字元的檔案
4
 * TXT檔案拷貝--FileReader類與 FileWriter類
5
 */
6
import java.io.*;
7
public class Io05 {
8
    public static void main(String[] args) {
9
        //檔案取出字元流物件(輸入流)
10
        FileReader fr=null;
11
        //寫入到檔案(輸出流)
12
        FileWriter fw=null;
13
        try {
14
            //建立fr物件
15
            fr=new FileReader("e:\\ff\\hsp.txt");
16
            //建立輸出物件
17
            fw=new FileWriter("e:\\hsp.txt");
18
            //建立字元陣列
19
            char c[]=new char[1024];
20
            int n=0;
21
            //讀入到記憶體
22
            while((n=fr.read(c))!=-1){
23
                //控制檯輸出TXT檔案內容
24
                String s=new String(c,0,n);
25
                System.out.println(s);
26
                fw.write(c, 0, n);
27
            }
28
        } catch (Exception e) {
29
            e.printStackTrace();
30
        }finally{
31
            try {
32
                fr.close();
33
                fw.close();
34
            } catch (Exception e) {
35
                e.printStackTrace();
36
            }
37
        }
38
    }
39
}
40

----------------------------------------------

常用io--緩衝字元流

為了提高效率引入了緩衝字元流

案例[Io06.java](檔案緩衝字元流,目的:BufferedReaderBufferedWriter介紹,直接操作String)


  1
/**
2
 * File類的基本用法
3
 * io流--緩衝字元流
4
 * BufferedReader類與BufferedWriter類
5
 */
6
import java.io.*;
7
public class Io06 {
8
    public static void main(String[] args) {
9
        BufferedReader br=null;
10
        BufferedWriter bw=null;
11
        try {
12
            //先建立FileReader物件
13
            FileReader fr=new FileReader("e:\\ff\\hsp.txt");
14
            br=new BufferedReader(fr);
15
            
16
            //建立FileWriter物件
17
            FileWriter fw=new FileWriter("e:\\hsp1.txt");
18
            bw=new BufferedWriter(fw);
19
            
20
            //迴圈讀取
21
            String s="";
22
            while((s=br.readLine())!=null){
23
                //輸出到磁碟
24
                bw.write(s+"\r\n");
25
            }
26
        } catch (Exception e) {
27
            e.printStackTrace();
28
        }finally{
29
            try {
30
                br.close();
31
                bw.close();
32
            } catch (Exception e) {
33
                e.printStackTrace();
34
            }
35
        }
36
    }
37
}
38

-----------------------------------------

常用io--列印輸出流PrintWriter

列印輸出流PrintWriter可以使用print/printlnwriter方法。但不換行。需在文字內容中加入\r\n萬用字元才可以做到。

PrintWriter的使用方法與FileReaderFileWriter/BufferedReaderBufferedWriter基本相同

記事本例項[Io07.java]

x
  1
/**
2
 * 我的記事本(介面+功能)
3
 */
4
import java.awt.*;
5
import javax.swing.*;
6
import java.io.*;
7
import java.awt.event.*;
8
public class Io07 extends JFrame implements ActionListener{
9
    //定義元件
10
    JTextArea jta=null;//文字框
11
    //選單條
12
    JMenuBar jmb=null;
13
    //定義第一個JMenu
14
    JMenu jm1=null;
15
    //定義JMenuItem
16
    JMenuItem jmi1=null;
17
    JMenuItem jmi2=null;
18
    JMenuItem jmi3=null;
19
    
20
    public static void main(String[] args) {
21
        Io07 io=new Io07();
22
    }
23
    //建構函式
24
    public Io07(){
25
        //建立元件
26
        jta=new JTextArea();
27
        jmb=new JMenuBar();
28
        jm1=new JMenu("檔案(F)");
29
        //設定助記符
30
        jm1.setMnemonic('F');
31
        jmi1=new JMenuItem("開啟(O)");
32
        //open開啟註冊監聽
33
        jmi1.addActionListener(this);
34
        jmi1.setActionCommand("open");
35
        
36
        jmi2=new JMenuItem("儲存(S)");
37
        //save儲存註冊監聽
38
        jmi2.addActionListener(this);
39
        jmi2.setActionCommand("save");
40
        
41
        jmi3=new JMenuItem("退出(X)");
42
        //exit退出註冊監聽
43
        jmi3.addActionListener(this);
44
        jmi3.setActionCommand("exit");
45
        
46
        //加入到選單
47
        this.setJMenuBar(jmb);
48
        //把jm1放到jmb
49
        jmb.add(jm1);
50
        //把 jmi1放入jm1
51
        jm1.add(jmi1);
52
        jm1.add(jmi2);
53
        jm1.add(jmi3);
54
        
55
        //設定介面管理器(預設BorderLayout邊界佈局管理器)
56
        
57
        //加入元件
58
        this.add(jta);
59
        
60
        //設定JFrame面板
61
        this.setTitle("記事本介面與功能");
62
        this.setSize(500, 400);
63
        this.setLocationRelativeTo(null);
64
        this.setVisible(true);
65
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
66
    }
67
    
68
    public void actionPerformed(ActionEvent e) {
69
        //判斷"開啟"選單被選中
70
        if(e.getActionCommand().equals("open")){
71
            /**
72
             * 隆重推薦JFileChooser元件
73
             */
74
            //建立一個檔案選擇元件
75
            JFileChooser jfc=new JFileChooser();
76
            //設定名字
77
            jfc.setDialogTitle("請選擇要開啟的檔案...");
78
            //使用預設方式
79
            jfc.showOpenDialog(null);
80
            //顯示
81
            jfc.setVisible(true);
82
            
83
            //得到使用者選擇的檔案全(絕對)路徑
84
            String filename=jfc.getSelectedFile().getAbsolutePath();
85
            
86
            FileReader fr=null;
87
            BufferedReader br=null;
88
            try {
89
                fr=new FileReader(filename);
90
                br=new BufferedReader(fr);
91
                //從檔案中讀取資訊並顯示到jta(JTextArea)中
92
                String s="";
93
                String allCon="";
94
                while((s=br.readLine())!=null){
95
                    allCon+=s+"\r\n";//"\r\n"顯示文字時將檔案中原有的格式顯示到jta中
96
                }
97
                //放置到jta即可
98
                jta.setText(allCon);
99
            } catch (Exception e2) {
100
                e2.printStackTrace();
101
            }finally{
102
                try {
103
                    br.close();
104
                    fr.close();
105
                } catch (Exception e1) {
106
                    e1.printStackTrace();
107
                }
108
            }//判斷"儲存"選單被選中
109
        }else if(e.getActionCommand().equals("save")){
110
            //建立儲存對話方塊
111
            JFileChooser jfc=new JFileChooser();
112
            //設定名字
113
            jfc.setDialogTitle("將檔案儲存到...");
114
            //使用預設方式
115
            jfc.showSaveDialog(null);
116
            //顯示
117
            jfc.setVisible(true);
118
            
119
            //得到使用者希望把檔案儲存到何處,檔案全路徑
120
            String file=jfc.getSelectedFile().getAbsolutePath();
121
            
122
            //準備寫入到指定檔案
123
            FileWriter fw=null;
124
            BufferedWriter bw=null;
125
            try {
126
                fw=new FileWriter(file);
127
                bw=new BufferedWriter(fw);
128
                //將JtextArea中的內容輸出到指定檔案中
129
                bw.write(this.jta.getText());
130
            } catch (Exception e2) {
131
                e2.printStackTrace();
132