JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區 » IO/Streams  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 命令模式下的上傳檔案,遇到中文目錄或檔案會變亂碼,如何解決?
genovalee





發文: 10
積分: 0
於 2011-05-26 20:42 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
底下的程式碼片段是從本機端上傳檔案到伺服器端的程式,如果本機端有子目錄,則會在伺服器端mkdir一個子目錄,再將子目錄下的檔案上傳,如果目錄與檔案都是英數字沒問題,若有中文目錄或中文檔案就會跳exception,如何解決中文檔名的問題?如果改用ftp.executeCommand執行FTP指令,好像都顯示500異常碼,無法解析指令,好像是把目錄跟檔名產生listarray[]時才會變成亂碼,會跟SERVER端的設定有關嗎?還是java.io本來就對中文支援度不佳?
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
File[] files = file.listFiles(); 
ArrayList<File> fileList = new ArrayList<File>(); 
      for(int i = 0; i < files.length; i++) { 
           if(files[i].isDirectory()){  //先建立目錄
               //System.out.println("目錄"+ filename+"\\"+files[i].getName());
               ftp.createDirectory(files[i].getName()); 
               //result = ftp.executeCommand("mkdir "+ files[i].getName());
               //System.out.println(result);
               ftp.changeDirectory(ftp.getRemoteDirectory()+"/"+files[i].getName());
               //ftp.executeCommand("cd "+ ftp.getRemoteDirectory()+"/"+files[i].getName());
               File subfile = new File(filename+"\\"+files[i].getName());
               File[] subfiles = subfile.listFiles(); 
               ArrayList<File> subfileList = new ArrayList<File>(); 
                     //上傳指定目錄下子目錄的檔案
               for(int j = 0; j < subfiles.length; j++) {
                        if (subfiles[j].isFile()) {
                               subfileList.add(subfiles[j]); 
                               //System.out.println("current檔案"+ subfiles[j]);
                        }
               } 
               //上傳指定目錄下的檔案
               log.info("Uploading file");
               log.info("Current dir: " + ftp.getRemoteDirectory()/*+"/"+files[i].getName()*/);
                       for(File sf: subfileList) {
                              ftp.uploadFile(sf.toString(), sf.getName());
                              //System.out.println("current檔案"+ sf);
                              //result = ftp.executeCommand("mput *.*");
                              //System.out.println(result);
                              log.info(sf.getName() +" File uploaded");                 
                       }
               ftp.changeToParentDirectory();
               }
           else { 
                  if (files[i].isFile()) {
                             fileList.add(files[i]); 
                  }
           }


genovalee edited on 2011-05-26 20:45
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
1192 命令模式下的上傳檔案,遇到中文目錄或檔案會變亂碼,如何解決? genovalee 2252 2011-05-26 20:42
917 Re:命令模式下的上傳檔案,遇到中文目錄或檔案會變亂碼,如何解決? genovalee 148 2011-06-01 21:22
852 Re:命令模式下的上傳檔案,遇到中文目錄或檔案會變亂碼,如何解決? bernardvai 70 2011-06-18 10:56
» JWorld@TW »  Java SE 討論區 » IO/Streams

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8