2010-01-09 52 views
0

好吧我有很多關於我的文件共享應用程序的問題,我不知道從哪裏開始。我的Java知識是非常有限的,我會滿意你提供給我的任何幫助。java文件共享應用程序,用戶登錄

這就是說,這裏來的問題。

首先,我的工作需要看有點像這一個用戶登錄方法:

import java.io.File; 
import java.util.ArrayList; 


public class User { 

    String username; 
    String IPAdresa; 

    public User(String username, String IPAdresa) { 

     this.username = username.toLowerCase(); 
     this.IPAdresa = IPAdresa; 

    } 

    public void fileList() { 

     ArrayList<String> list = new ArrayList<String>(); 

     File folder = new File("C:\\userfolder"); 

      File[] files = folder.listFiles(); 

      for (int i = 0; i < files.length; i++) { 

       list.add(i, files[i].toString()); 

      } 

    } 
} 

正如你可以看到我有一個包含關於用戶的參數,如用戶名和ip地址的用戶類別以及fileList方法,該方法列出來自某個文件夾的文件並創建包含這些文件名作爲字符串的數組列表。

接下來我要做的就是創建一個類或一個爲客戶/用戶提供搜索功能的方法。例如,當用戶登錄到應用程序時,他將希望搜索某個文件,並且還會將其共享文件夾中的文件列表提供給其他用戶。按照我理解我的menthor的方式,Request類需要包含每個能夠在用戶各自的文件列表中搜索的循環。我不知道如何解決這個問題,並且在處理數組列表時遇到很多問題。

這怎麼它應該看起來像約:(我用那種僞代碼爲這一個至今)

public class RequestForFile { 

    ArrayList list = new ArrayList(); 
    User user = new User("Slavisha","123.23.34.45"); 

    public RequestForFile() { 
     list.add(user); 
      foreach (User user in userlist) { 
       foreach (String str in User.fileList()) { 
        if (str == request) 
        ... 
       } 
      } 

    } 

} 

下一個問題: 如何在用戶登錄的Java應用程序?我一整天都在想這件事,並試圖繞過它,但我只是失敗了。我還沒有GUI/Swing,希望最終做到這一點。

我有3個類代表客戶端,服務器和HandleClient。

正如我所說的任何貢獻是受歡迎的。我肯定會回來更多的問題。 謝謝

回答

0

您在一個問題中提出的問題太多。一個問題涉及你的RequestForFile對象如何知道它正在處理哪個用戶。這是登錄問題。建議你分別提出。

讓我們暫時假設我們知道這是Slavisha在詢問的那個ipaddress。這裏有相當多的問題:

1)。有什麼要求? RequestForFile()不接受任何參數來說明正在請求哪個文件。那麼RequestForFile()的可重複性是什麼?它是否表示一個請求?它是否負責實際查找文件?還原它? 2)。你的User.fileList()方法實際上並沒有做任何有用的事情。它不會返回任何東西,因此在完成它的一切後,它發現它已經丟失。 3)。無論如何,每個用戶似乎都在查看相同的文件夾:「C:\ userfolder」你是否打算爲每個用戶都有一個單獨的目錄。 4)。查看列表可能效率不高,您需要閱讀關於套件和地圖。

我認爲你需要一個非常詳細的重新設計。您的用戶類需要回答諸如「該用戶是否擁有該文件」等問題。 REquest類需要標識一個特定的用戶並要求它提供該文件。我不清楚你打算如何將文件從客戶端傳輸到服務器。

我應該說做客戶機/服務器編程作爲早期教育練習是非常雄心勃勃的。

+0

RequestForFile()方法我給你的是不完整的,我雖然有人可以向我解釋如何完全準確地完成它。 這是因爲我沒有讓自己清楚。這次我會盡量更加精確。我有一個RequestForFile()和User類的新代碼。 3)當然,每個用戶應該有自己的shareFolder。稍後處理,似乎不是主要問題。 4)不知道套和地圖,但我很確定我必須使用ArrayLists,而不是我的選擇無論如何:( – AmateurProgrammer 2010-01-09 14:46:47

+0

這是非常雄心勃勃,但這項任務是不可避免的,我必須完成這個在接下來的幾天裏,即使我必須整夜保持清醒狀態, 謝謝你,順便說一下,你一直很有幫助,我希望你能在我的下一個問題中幫助我解決類似的問題。 – AmateurProgrammer 2010-01-09 14:47:17

0

我不太清楚'登錄'是什麼意思。如果(我相信)你想識別用戶在Java應用程序,使用:

System.getProperty("user.name"); 

它給你的用戶的當前運行的應用程序的用戶名。

0

GUI將用於給用戶提供除命令行外的其他內容,但Swing或AWT不提供您似乎將它們關聯的功能 - 即連接服務器和客戶端,允許用戶登錄到服務器的運行實例。 GUI會使這個過程更加用戶友好,但基本上你正在討論使用套接字讓客戶端連接到服務器(已知IP地址和爲連接設置的開放端口),發送一些用戶信息(名稱共享文件),然後從服務器接收所有可能的共享文件列表。客戶端可以在本地搜索這個列表。

您可以通過其他方式做到這一點 - 服務器從客戶端獲取請求,執行搜索並僅將結果發送到客戶端。取決於你想把大部分工作量放在哪裏。無論哪種方式,你都在談論通過套接字連接發送字符串。至少,直到您查看文件名列表以實際將文件從一個客戶端發送到另一個客戶端。

因此,您可能想要開始查看a tutorial on sockets以瞭解不同計算機上的兩個獨立程序如何將信息發送給另一個。

+0

我剛纔意識到客戶端與用戶是平等的,我明白GUI僅僅是爲了登錄的感覺。真正的連接是使用套接字創建的。我相信我的服務器類和客戶端類很好地完成。我修復了RequestForFile和User類,很快就會問另一個問題。 – AmateurProgrammer 2010-01-09 14:41:42

相關問題