好的我对文件共享应用程序有很多疑问,我不知道从哪里开始。我的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());
}
}
}
如您所见,我的用户类包含有关用户的参数,例如username和IPAddress,以及列出某个文件夹中文件的fileList方法,并创建包含这些文件名作为字符串的arraylist。
我要做的下一件事是创建一个为客户/用户提供搜索功能的类或方法。例如,当用户登录到应用程序时,他将要搜索某个文件,并且还将从其共享文件夹中的文件列表提供给其他用户。我理解我的灵感的方式,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的类。
正如我所说,欢迎任何贡献。我肯定会回答更多问题。 感谢
答案 0 :(得分:0)
我不太确定'登录'是什么意思。如果(我相信)您希望识别 Java应用程序中的用户,请使用:
System.getProperty("user.name");
,它为您提供当前运行应用程序的用户的用户名。
答案 1 :(得分:0)
GUI将用于向用户提供除命令行之外的其他内容,但Swing或AWT不提供您似乎与之关联的功能 - 即连接服务器和客户端,允许用户登录到服务器的运行实例。 GUI会使这个过程更加用户友好,但从根本上说你正在谈论使用套接字让客户端连接到服务器(已知的IP地址和连接的开放端口集),发送一些用户的信息(名称)共享文件)然后从服务器接收所有可能的共享文件的列表。然后,客户端可以在本地搜索此列表。
您可以通过相反的方式执行此操作 - 服务器从客户端获取请求,进行搜索,并将结果发送给客户端。取决于您希望将大部分工作量放在何处。无论哪种方式,您都在谈论通过套接字连接发送字符串。至少,直到你从查看文件名列表到实际将文件从一个客户端发送到另一个客户端。
因此,您可能希望开始查看a tutorial on sockets,了解不同计算机上的两个独立程序如何相互发送信息。
答案 2 :(得分:0)
你在一个问题上问了太多问题。一个问题涉及RequestForFile对象如何知道它正在处理哪个用户。这是登录问题。建议你单独提出。
我们暂时假设我们知道那个问题是ipaddress的Slavisha。这里有很多问题:
1)。有什么要求? RequestForFile()不接受任何参数来说明正在请求的文件。那么RequestForFile()的可靠性是什么?它是否代表一个请求?是否负责实际查找文件?回来了?
2)。您的User.fileList()方法实际上没有做任何有用的事情。它没有返回任何东西,所以在完成所有它已经弄清楚它丢失了。
3)。无论如何,每个用户似乎都在寻找同一个文件夹:“C:\ userfolder”你是否打算为每个用户创建一个单独的目录。
4)。查看列表可能效率不高,您需要阅读有关集合和地图的内容。
我认为你需要进行非常详细的重新设计。您的用户类需要回答诸如“此用户是否拥有该文件”之类的问题。 REquest类需要标识特定用户并向其询问该文件。我不清楚你打算如何将文件从客户端传输到服务器。
我应该说,做客户/服务器编程作为早期教育活动是非常雄心勃勃的。