文件操作的例子

最近一直在学习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();
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值