几个文件操作的小例子

简介:

最近一直在学习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();
     }
}


============================================================================== 
目录
相关文章
|
6月前
|
存储 C语言
文件操作及函数
文件操作及函数
51 0
|
存储 编译器 C语言
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)(下)
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)
86 1
|
程序员 编译器 C语言
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)(上)
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)
120 0
|
存储 C语言
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)(中)
确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)
76 0
|
API C语言 C++
C++文件操作的5种方式
C++文件操作的5种方式
154 1
|
C语言
【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
212 0
【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )