JFileChooser
JScrollPane
File
讀取一個資料夾列出所有子資料夾中特定副檔名的個數
JScrollPane
File
讀取一個資料夾列出所有子資料夾中特定副檔名的個數
當一個年輕人會忘了自己新番追到哪一集的時候就代表他已經老了
依照紀錄想要寫這小東西的時間是一月初~實際寫出來是2月初
寫完後打篇文紀錄是快一個禮拜後囧
我真的越來越會拖了耶(掩面
會寫這程式有兩個理由~
1.之前就有人問過有沒有把資料夾內檔案全部輸出的東西(cmd可以囧)
2......我已經發生過好幾次新番打開來後才發現自己上一集根本沒抓也沒看(掩面
剛好這學期好像有提到用java讀資料夾就順便實作了
依照紀錄想要寫這小東西的時間是一月初~實際寫出來是2月初
寫完後打篇文紀錄是快一個禮拜後囧
我真的越來越會拖了耶(掩面
會寫這程式有兩個理由~
1.之前就有人問過有沒有把資料夾內檔案全部輸出的東西(cmd可以囧)
2......我已經發生過好幾次新番打開來後才發現自己上一集根本沒抓也沒看(掩面
剛好這學期好像有提到用java讀資料夾就順便實作了
myjfile.jar |
效果如上XDDD ~基本上這個排版我已經決定廢棄了XDDD所以這篇真的只是紀錄一下程式碼而已
**如果分析子資料夾路徑的時候遇到無法存取的資料夾會直接當給你看**
**如果分析子資料夾路徑的時候遇到無法存取的資料夾會直接當給你看**
JFileChooser
JFileChooser Jdr=new JFileChooser();
Jdr.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
設定選擇什麼三選一
JFileChooser.FILES_ONLY(預設)
JFileChooser.DIRECTORIES_ONLY
JFileChooser.FILES_AND_DIRECTORIES
Jdr.setDialogTitle("選擇一個資料夾");
public void actionPerformed(ActionEvent e){
int result=Jdr.showDialog(this,"確認");
//我這邊的this是指jframe 必須傳入一個Component就是了
if(result==JFileChooser.APPROVE_OPTION){
JTA1.setText("");
filename=Jtf2.getText().split(",");//已,號分割字串並存進String[] 注意split的參數會吃正規表達式
Jtf1.setText(Jdr.getSelectedFile().getAbsolutePath());
//getAbsolutePath 回傳完整路徑
//getSelectedFile 注意必須要先檢查是不是有選擇
if(jcB.getSelectedItem().equals("所有子檔案"))output(JTA1,new File(Jtf1.getText()),filename);
else output2(JTA1,new File(Jtf1.getText()),filename);
}
}
其他的用法查api吧~只是要拿個資料夾路徑的我沒研究XD
JFileChooser Jdr=new JFileChooser();
Jdr.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
設定選擇什麼三選一
JFileChooser.FILES_ONLY(預設)
JFileChooser.DIRECTORIES_ONLY
JFileChooser.FILES_AND_DIRECTORIES
Jdr.setDialogTitle("選擇一個資料夾");
public void actionPerformed(ActionEvent e){
int result=Jdr.showDialog(this,"確認");
//我這邊的this是指jframe 必須傳入一個Component就是了
if(result==JFileChooser.APPROVE_OPTION){
JTA1.setText("");
filename=Jtf2.getText().split(",");//已,號分割字串並存進String[] 注意split的參數會吃正規表達式
Jtf1.setText(Jdr.getSelectedFile().getAbsolutePath());
//getAbsolutePath 回傳完整路徑
//getSelectedFile 注意必須要先檢查是不是有選擇
if(jcB.getSelectedItem().equals("所有子檔案"))output(JTA1,new File(Jtf1.getText()),filename);
else output2(JTA1,new File(Jtf1.getText()),filename);
}
}
其他的用法查api吧~只是要拿個資料夾路徑的我沒研究XD
File
JTextArea jta(印到哪裡),File fol(主資料夾),String []arr(要查找的副檔名)
public void output2(JTextArea jta,File fol,String []arr){
for(File cf:fol.listFiles()){ //依序處理每個子檔案
if(cf.isDirectory()){ //如果讀到的是個子資料夾
jta.append(cf.getName()+" 中共有"+contFile(cf,arr)+"個檔案\r\n");
}
}
}
public int contFile(File f,String []arr){
int ans=0;
if(arr==null||arr[0].equals(""))return f.listFiles().length; //如果根本沒設定要查哪些副檔名~我就連同資料夾一起算進去
for(File cf:f.listFiles()){
String tmp=cf.getName();
for(String str:arr){
if(tmp.substring(tmp.lastIndexOf(".")+1).equals(str)){ //其實這邊應該只切一次比較就好~改造後再改吧囧
ans++;
break;
}
}
}
return ans;
}
JTextArea jta(印到哪裡),File fol(主資料夾),String []arr(要查找的副檔名)
public void output2(JTextArea jta,File fol,String []arr){
for(File cf:fol.listFiles()){ //依序處理每個子檔案
if(cf.isDirectory()){ //如果讀到的是個子資料夾
jta.append(cf.getName()+" 中共有"+contFile(cf,arr)+"個檔案\r\n");
}
}
}
public int contFile(File f,String []arr){
int ans=0;
if(arr==null||arr[0].equals(""))return f.listFiles().length; //如果根本沒設定要查哪些副檔名~我就連同資料夾一起算進去
for(File cf:f.listFiles()){
String tmp=cf.getName();
for(String str:arr){
if(tmp.substring(tmp.lastIndexOf(".")+1).equals(str)){ //其實這邊應該只切一次比較就好~改造後再改吧囧
ans++;
break;
}
}
}
return ans;
}
原始碼全文
把所有東西全塞再一個JAVA檔的壞習慣不知啥時才會改過來阿Orz
這樣記一下才發現~真的是毫無技術含量的一篇XDDDD
畢竟是分段紀錄一個程式的部份嘛~(藉口)
讀取RSS已經寫的差不多了~就是速度爆慢不曉得為啥
之後改造成能照字幕組分類~預備合☆體