最近一直在学习java web方面的东西,本来想完整的写一篇java web方面的文章,但是那一块太杂了,自己现在也不是很清晰,主要是myeclipse+Tomcat,每次启动tomcat都要花很长的时间,所以java web方面的文章目前还没有写,今天就先将自己之前的东西贴出来吧、
【案例1】获取文件的属性
运行结果:
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
/**
* 获取文件属性
* */
import
java.awt.FlowLayout;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.io.File;
import
java.util.Date;
import
javax.swing.JButton;
import
javax.swing.JCheckBox;
import
javax.swing.JFileChooser;
import
javax.swing.JFrame;
import
javax.swing.JLabel;
import
javax.swing.JPanel;
import
javax.swing.JTextField;
public
class
MdifyfileAttribute
extends
JFrame
implements
ActionListener{
JButton chooseButton =
new
JButton(
"浏览..."
);
JLabel nameLabel =
new
JLabel();
JLabel sizelabel =
new
JLabel(
"文件大小"
);
JLabel pathLabel =
new
JLabel(
"文件路径"
);
JLabel uriLabel =
new
JLabel(
"URI路径"
);
JLabel datelabel =
new
JLabel(
"最后修改日期"
);
JTextField sizeField =
new
JTextField(
30
);
JTextField pathField =
new
JTextField(
30
);
JTextField uriField =
new
JTextField(
30
);
JTextField dateField =
new
JTextField(
30
);
JCheckBox readCheckBox =
new
JCheckBox(
"可读"
);
JCheckBox writeCheckBox =
new
JCheckBox(
"可写"
);
JCheckBox hideCheckBox =
new
JCheckBox(
"隐藏"
);
JPanel panel =
new
JPanel();
public
MdifyfileAttribute(){
panel.setLayout(
new
FlowLayout());
panel.add(chooseButton);
panel.add(nameLabel);
panel.add(sizelabel);
panel.add(sizeField);
panel.add(pathLabel);
panel.add(pathField);
panel.add(uriLabel);
panel.add(uriField);
panel.add(datelabel);
panel.add(dateField);
JPanel checkPanel =
new
JPanel();
checkPanel.add(readCheckBox);
checkPanel.add(writeCheckBox);
checkPanel.add(hideCheckBox);
panel.add(checkPanel);
setContentPane(panel);
chooseButton.addActionListener(
new
ActionListener(){
@Override
public
void
actionPerformed(ActionEvent e){
JFileChooser chooser =
new
JFileChooser();
// 显示文件选择对话框
chooser.showOpenDialog(MdifyfileAttribute.
this
);
File file = chooser.getSelectedFile();
if
(file !=
null
){
nameLabel.setText(file.getName());
sizeField.setText(file.length() +
""
);
pathField.setText(file.getPath());
uriField.setText(file.toURI() +
""
);
dateField.setText(
new
Date(file.lastModified()) +
""
);
readCheckBox.setSelected(file.canRead());
writeCheckBox.setSelected(file.canWrite());
hideCheckBox.setSelected(file.isHidden());
}
}
});
setSize(
400
,
400
);
setVisible(
true
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public
static
void
main(String[] args){
new
MdifyfileAttribute();
}
}
|
显示指定类型的文件
运行结果:
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
package
File;
import
java.awt.FlowLayout;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.io.File;
import
java.io.FileFilter;
import
java.util.Date;
import
javax.swing.JButton;
import
javax.swing.JFileChooser;
import
javax.swing.JFrame;
import
javax.swing.JLabel;
import
javax.swing.JPanel;
import
javax.swing.JTextArea;
import
javax.swing.JTextField;
public
class
ListCustomTypeFile
extends
JFrame
implements
ActionListener{
JPanel panel =
new
JPanel();
JButton chooseButton =
new
JButton(
"选择文件夹"
);
JLabel pathLabel =
new
JLabel();
JLabel textLabel =
new
JLabel(
"请输入指定的文件扩展名"
);
JTextField textField =
new
JTextField(
20
);
JTextArea area =
new
JTextArea(
5
,
30
);
File dir =
null
;
ListCustomTypeFile(){
panel.setLayout(
new
FlowLayout());
panel.add(chooseButton);
panel.add(pathLabel);
panel.add(textLabel);
panel.add(textField);
panel.add(area);
setContentPane(panel);
chooseButton.addActionListener(
this
);
setSize(
400
,
400
);
setVisible(
true
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public
void
actionPerformed(ActionEvent e){
JFileChooser chooser =
new
JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.showDialog(
this
,
null
);
dir = chooser.getSelectedFile();
pathLabel.setText(dir.toString());
listFiles();
}
public
void
listFiles(){
if
(dir ==
null
){
return
;
}
// 获取符合条件的文件数组
File[] files = dir.listFiles(
new
CustomFilter());
String str =
"文件名"
+
"\t\t"
+
"文件大小"
+
"\t\t"
+
"最后修改日期\n"
;
area.setText(str);
for
(File temp : files){
str += temp.getName() +
"\t\t"
+ temp.length() +
"\t\t"
+
new
Date(temp.lastModified()) +
"\n"
;
area.setText(str);
}
}
public
final
class
CustomFilter
implements
FileFilter{
@Override
public
boolean
accept(File pathname){
// 获取用户设定的指定扩展名
String name = textField.getText();
if
(name ==
null
|| name.isEmpty()){
return
false
;
}
if
(!name.startsWith(
"."
)){
name =
"."
+ name;
}
name = name.toLowerCase();
if
(pathname.getName().toLowerCase().endsWith(name)){
return
true
;
}
else
{
return
false
;
}
}
}
// end inner class
public
static
void
main(String[] args){
new
ListCustomTypeFile();
}
}
|
下面打算以树结构显示文件目录:
先来个热身吧,先实现下面的图像再说,回忆一下Jtree的用法。其实主要是我对swing不熟悉,哈哈。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package
File;
import
java.awt.FlowLayout;
import
javax.swing.JFrame;
import
javax.swing.JPanel;
import
javax.swing.JScrollPane;
import
javax.swing.JSplitPane;
import
javax.swing.JTextArea;
import
javax.swing.JTree;
public
class
TreeSimple
extends
JFrame{
public
TreeSimple(){
JPanel panel =
new
JPanel();
JTextArea area =
new
JTextArea(
5
,
30
);
JTree tree =
new
JTree();
JScrollPane js1 =
new
JScrollPane(tree,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
panel.setLayout(
new
FlowLayout());
JScrollPane js =
new
JScrollPane(area);
JSplitPane jsplit =
new
JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
true
,
js1, js);
panel.add(jsplit);
setContentPane(panel);
setSize(
400
,
400
);
setVisible(
true
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public
static
void
main(String[] args){
new
TreeSimple();
}
}
|
下面获取文件文件目录树
运行结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
package
File;
import
java.awt.event.WindowAdapter;
import
java.awt.event.WindowEvent;
import
java.io.File;
import
javax.swing.JFrame;
import
javax.swing.JPanel;
import
javax.swing.JScrollPane;
import
javax.swing.JTree;
import
javax.swing.event.TreeSelectionEvent;
import
javax.swing.event.TreeSelectionListener;
import
javax.swing.tree.DefaultMutableTreeNode;
import
javax.swing.tree.TreePath;
public
class
Disktree
extends
JFrame
implements
TreeSelectionListener{
DefaultMutableTreeNode rootNode =
new
DefaultMutableTreeNode();
JTree tree =
new
JTree(rootNode);
JPanel panel =
new
JPanel();
public
Disktree(){
tree.addTreeSelectionListener(
this
);
JScrollPane js =
new
JScrollPane(tree,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
panel.add(tree);
setContentPane(panel);
addWindowListener(
new
WindowAdapter(){
@Override
public
void
windowActivated(WindowEvent e){
File[] files = File.listRoots();
for
(File file : files){
DefaultMutableTreeNode node =
new
DefaultMutableTreeNode(
file);
rootNode.add(node);
}
tree.expandPath(
new
TreePath(rootNode));
}
});
setSize(
500
,
500
);
setVisible(
true
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public
static
void
main(String[] args){
new
Disktree();
}
@Override
public
void
valueChanged(TreeSelectionEvent e){
TreePath path = e.getPath();
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
.getLastPathComponent();
Object userObject = node.getUserObject();
if
(!(userObject
instanceof
File)){
return
;
}
File folder = (File) userObject;
if
(!folder.isDirectory()){
return
;
}
File[] files = folder.listFiles();
for
(File file : files){
node.add(
new
DefaultMutableTreeNode(file));
}
}
}
|
查找替换文本文件内容
运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
package
File;
import
java.awt.Desktop;
import
java.awt.GridLayout;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.io.File;
import
java.io.FileReader;
import
java.io.FileWriter;
import
java.io.IOException;
import
javax.swing.JButton;
import
javax.swing.JFileChooser;
import
javax.swing.JFrame;
import
javax.swing.JLabel;
import
javax.swing.JOptionPane;
import
javax.swing.JPanel;
import
javax.swing.JTextField;
import
javax.swing.filechooser.FileNameExtensionFilter;
/**
* 查找替换文本文件的内容
* */
public
class
ReplaceFileText
extends
JFrame{
JPanel panel =
new
JPanel();
JButton chooseButton =
new
JButton(
"浏览文件"
);
JTextField pathField =
new
JTextField(
20
);
JLabel searchlabel =
new
JLabel(
"搜索文本:"
);
JTextField searchField =
new
JTextField(
20
);
JLabel replaceLabel =
new
JLabel(
"替换为:"
);
JTextField replaceField =
new
JTextField(
20
);
JButton replaceButton =
new
JButton(
"替换"
);
JButton openButton =
new
JButton(
"打开查看文件"
);
File file =
null
;
// 保存选择的文件
public
ReplaceFileText(){
init();
setSize(
400
,
400
);
setVisible(
true
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private
void
init(){
panel.setLayout(
new
GridLayout(
4
,
2
));
panel.add(chooseButton);
panel.add(pathField);
panel.add(searchlabel);
panel.add(searchField);
panel.add(replaceLabel);
panel.add(replaceField);
panel.add(replaceButton);
panel.add(openButton);
setContentPane(panel);
chooseButton.addActionListener(
new
ActionListener(){
@Override
public
void
actionPerformed(ActionEvent e){
chooseButton_event();
}
});
replaceButton.addActionListener(
new
ActionListener(){
@Override
public
void
actionPerformed(ActionEvent e){
replaceButton_event();
}
});
openButton.addActionListener(
new
ActionListener(){
@Override
public
void
actionPerformed(ActionEvent e){
openButton_event();
}
});
}
/**
* 选择文件按钮事件处理
* */
public
void
chooseButton_event(){
JFileChooser chooser =
new
JFileChooser();
// 设置文件扩展名过滤器
chooser.setFileFilter(
new
FileNameExtensionFilter(
"文本文件"
,
"txt"
,
"java"
,
"py"
,
"html"
));
// 设置文件选择模式
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
// 显示文件选择对话框
int
option = chooser.showOpenDialog(
this
);
// 确定用户按下打开按钮,而不是取消按钮
if
(option != JFileChooser.APPROVE_OPTION){
return
;
}
// 获取用户选择的文件
file = chooser.getSelectedFile();
// 设置文件路径
pathField.setText(file.getPath());
}
/**
* 替换按钮事件处理
* */
public
void
replaceButton_event(){
String searchStr = searchField.getText();
String replaceStr = replaceField.getText();
if
(searchStr ==
null
|| replaceStr ==
null
){
return
;
}
try
{
FileReader reader =
new
FileReader(file);
char
[] dates =
new
char
[
1024
];
int
count =
0
;
StringBuilder sb =
new
StringBuilder();
while
((count = reader.read(dates)) >
0
){
String str = String.valueOf(dates,
0
, count);
sb.append(str);
}
reader.close();
// 从构造器中生成字符串,并替换搜索文本
String str = sb.toString().replace(searchStr, replaceStr);
FileWriter writer =
new
FileWriter(file);
writer.write(str.toCharArray());
writer.close();
}
catch
(Exception e){
e.printStackTrace();
}
JOptionPane.showMessageDialog(
null
,
"替换完成"
);
}
/**
* 打开文件按钮事件处理
* */
public
void
openButton_event(){
Desktop desktop = Desktop.getDesktop();
if
(desktop.isDesktopSupported()){
try
{
desktop.open(file);
}
catch
(IOException e){
e.printStackTrace();
}
}
}
public
static
void
main(String[] args){
new
ReplaceFileText();
}
}
|
==============================================================================