Javaファイル共有アプリケーション、ユーザーロギング
-
19-09-2019 - |
質問
ファイル共有アプリケーションに関して多くの質問があるので、どこから始めればいいのかわかりません。私の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());
}
}
}
ご覧のとおり、ユーザー名やiPaddressなどのユーザーに関するパラメーターを含むユーザークラスと、特定のフォルダーからファイルをリストし、それらのファイル名を文字列として含む配列を作成するファイルリストメソッドもあります。
次にしなければならないことは、クライアント/ユーザーに検索機能を提供するクラスまたはメソッドを作成することです。たとえば、ユーザーがアプリケーションにログオンすると、特定のファイルを検索し、共有フォルダーのファイルのリストを他のユーザーに提供します。 Menthorを理解した方法では、リクエストクラスには、それぞれのファイルリスト内で検索できる各ループに含める必要があります。それをどのように引き出すかはわかりませんし、配列リストを操作することに関して多くの問題があります。
これは、ほぼのように見えるはずです:(私はこれまでのところこのものに一種の擬似コードを使用しています)
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/スイングを持っていません、最終的にそれをすることを望んでいます。
クライアント、サーバー、およびハンドレクレントを表す3つのクラスがあります。
私が言ったように、貢献は大歓迎です。私は確かにもっと質問を持って戻ってきます。ありがとう
解決
あなたは1つの質問であまりにも多くの質問をしています。 1つの質問は、RequestforFileオブジェクトがどのユーザーを扱っているかをどのように知っているかに関するものです。それがログインの質問です。それを別々に提起することをお勧めします。
尋ねているiPaddressのスラヴィシャであることを私たちが知っていると仮定しましょう。ここにはかなりの問題があります:
1)。何を求められていますか? requestforfile()は、どのファイルが要求されているかを示すパラメーターを使用しません。では、RequestForFile()の責任は何ですか? 1つのリクエストを表すと思われますか?実際にファイルを見つける責任はありますか?それを返しますか?
2)。 user.fileList()メソッドは実際には何も役に立たない。何も返さないので、完了時に失われたことがわかりました。
3)。とにかく、すべてのユーザーが同じフォルダーを探しているようです:「C: userfolder」は、各ユーザーに個別のディレクトリを持っているつもりでしたか。
4)。リストを通して見ることはおそらく効率的ではないので、セットとマップについて読む必要があります。
かなり詳細な再設計が必要だと思います。ユーザークラスは、「このユーザーにはそのファイルがありますか」などの質問に答える必要があります。リクエストクラスは、特定のユーザーを識別し、ファイルを尋ねる必要があります。ファイルをクライアントからサーバーに転送する方法は明確ではありません。
早期教育演習としてクライアント/サーバープログラミングを行うことはかなり野心的です。
他のヒント
「ログイン」とはどういう意味かはよくわかりません。 (私が信じているように)あなたがしたい場合 識別 Javaアプリケーションのユーザー、使用してください。
System.getProperty("user.name");
これにより、現在アプリケーションを実行しているユーザーのユーザー名が得られます。
GUIは、ユーザーにコマンドライン以外のものを見るために何かを提供するために使用されますが、スイングまたはAWTは、それらを関連付けているように見える機能を提供しません - つまり、サーバーとクライアントを接続して、ユーザーがログインすることができますサーバーの実行中のインスタンス。 GUIはこのプロセスをよりユーザーフレンドリーにしますが、基本的にはソケットを使用してクライアントがサーバーに接続できるようにしている(接続用に既知のIPアドレスと開くポートセット)、ユーザーの情報(名前)を送信します。共有ファイルの)から、サーバーから可能なすべての共有ファイルのリストを受信します。その後、クライアントはこのリストをローカルに検索できます。
これを逆に行うことができます - サーバーはクライアントからリクエストを取得し、検索を行い、結果をクライアントに送信するだけです。ほとんどのワークロードをどこに配置するかによって異なります。いずれにせよ、あなたはソケット接続を通して文字列を送信することについて話している。少なくとも、ファイル名のリストを見ることから、あるクライアントから別のクライアントに実際にファイルを送信するまでに行くまで。
だからあなたはおそらく見始めたいと思うでしょう ソケットのチュートリアル 異なるコンピューター上の2つの個別のプログラムが互いに情報を送信する方法を確認するため。