JAVA入門到精通-第46講-IO程式設計.記事本開發
阿新 • • 發佈:2018-11-30
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出去:
//關閉檔案流
---------------------------------------
----------------------------------------------
1
-----------------------------------------
JMenuBar 選單條是一個JMenuBar; JMenu File是一個JMenu;
一層放一層的:
//點選開啟,ActionListener,重寫方法 actionPerformed //建立檔案選擇元件
//swing元件---JFileChooser setDialogTitle("請選擇檔案...") 對話方塊:
//儲存-save addActionListener(this); setActionCommand("save");
//儲存檔案到何處:
//準備寫入到指定檔案即可-write出去:
//關閉檔案流
---------------------------------------
java檔案程式設計--常用io流
常用io流--檔案字元流
案例[Io05.java](檔案字元輸入、輸出流,目的:FileReader、FileWriter類)讀取一個檔案並寫入到另一個檔案中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](檔案緩衝字元流,目的:BufferedReader和BufferedWriter類介紹,直接操作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/println及writer方法。但不換行。需在文字內容中加入\r\n萬用字元才可以做到。
PrintWriter的使用方法與FileReader、FileWriter/BufferedReader、BufferedWriter基本相同
記事本例項[Io07.java]
x1
/**
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