0

好的,我有很多关于我的文件共享应用程序的问题,我不知道从哪里开始。我的 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,还有 fileList 方法,它列出来自某个文件夹的文件并创建包含这些文件名作为字符串的数组列表。

接下来我要做的是创建一个类或方法,为客户/用户提供搜索功能。例如,当用户登录到应用程序时,他会想要搜索某个文件,并且他会将其共享文件夹中的文件列表提供给其他用户。我理解我的导师的方式是,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 个代表 Client、Server 和 HandleClient 的类。

正如我所说,任何贡献都是受欢迎的。我肯定会带着更多问题回来。谢谢

4

3 回答 3

0

我不太清楚你所说的“登录”是什么意思。如果(我相信)您想在 Java 应用程序中识别用户,请使用:

System.getProperty("user.name");

它为您提供当前运行您的应用程序的用户的用户名。

于 2010-01-09T13:02:50.543 回答
0

GUI 将用于为用户提供除命令行以外的其他东西来查看,但 Swing 或 AWT 不提供您似乎与它们相关联的功能 - 即连接服务器和客户端,允许用户登录服务器的运行实例。GUI 将使这个过程更加用户友好,但从根本上讲,您是在谈论使用套接字让客户端连接到服务器(已知 IP 地址和为连接设置的打开端口),发送一些用户信息(名称共享文件),然后从服务器接收所有可能共享文件的列表。然后,客户端可以在本地搜索此列表。

您可以反过来执行此操作 - 服务器从客户端获取请求,进行搜索,然后将结果发送给客户端。取决于你想把大部分工作量放在哪里。无论哪种方式,您都在谈论通过套接字连接发送字符串。至少,在您从查看文件名列表到实际将文件从一个客户端发送到另一个客户端之前。

因此,您可能想开始查看有关套接字的教程,以了解不同计算机上的两个独立程序如何相互发送信息。

于 2010-01-09T13:45:08.057 回答
0

你在一个问题中问了太多问题。一个问题涉及您的 RequestForFile 对象如何知道它正在处理的用户。那就是登录问题。建议你单独提出。

让我们暂时假设我们知道该 IP 地址上的 Slavisha 在询问。这里有很多问题:

1)。求什么?RequestForFile() 不带任何参数来说明正在请求哪个文件。那么 RequestForFile() 的职责是什么?它应该代表一个请求吗?它负责实际查找文件吗?退货?

2)。您的 User.fileList() 方法实际上并没有做任何有用的事情。它不返回任何东西,所以在完成时它发现它丢失的所有东西。

3)。无论如何,每个用户似乎都在同一个文件夹中查找:“C:\userfolder”您是否打算为每个用户创建一个单独的目录。

4)。浏览列表可能效率不高,您需要阅读有关 Sets 和 Maps 的信息。

我认为您需要进行非常详细的重新设计。您的用户类需要回答诸如“此用户是否拥有该文件”之类的问题。REquest 类需要识别一个特定的用户并要求它提供文件。我不清楚您打算如何将文件从客户端传输到服务器。

我应该说,将客户端/服务器编程作为一项早期教育练习是非常雄心勃勃的。

于 2010-01-09T14:13:00.680 回答