Okay Je vais essayer d'être direct. Je travaille sur une application de partage de fichiers basée sur une architecture Client/Serer commune. J'ai aussi la classe HandleClient mais ce n'est pas particulièrement important ici.problèmes avec la classe RequestForFile() qui utilise la classe User en Java
Ce que je veux faire est de permettre aux utilisateurs de rechercher un fichier particulier qui peut être stocké dans des dossiers partagés d'autres utilisateurs. Par exemple, 3 utilisateurs sont connectés au serveur et ils ont tous leurs dossiers partagés respectifs. L'un d'eux veut faire une recherche pour un fichier nommé "Madonna" et l'application devrait lister tous les fichiers contenant ce nom et à côté de ce nom il devrait y avoir une information sur les utilisateurs qui ont/ont un fichier voulu. Ces informations peuvent être soit un nom d'utilisateur, soit une adresse IP. Voici la classe utilisateur, la façon dont il doit être écrit (c'est la façon dont mes supérieurs voulaient):
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;
public class User {
public static String username;
public static String ipAddress;
public User(String username, String ipAddress) {
username = username.toLowerCase();
System.out.println(username + " " + ipAddress);
}
public static void fileList() {
Scanner userTyping = new Scanner(System.in);
String fileLocation = userTyping.nextLine();
File folder = new File(fileLocation);
File[] files = folder.listFiles();
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < files.length; i++) {
list.add(i, files[i].toString().substring(fileLocation.length()));
System.out.println(list.get(i));
}
}
public static void main(String args[]) {
System.out.println("Insert the URL of your shared folder");
User.fileList();
}
}
Cette classe stocke les attributs d'un utilisateur particulier (nom d'utilisateur, IPAddress) et crée également la liste des fichiers à partir de le dossier partagé de cet utilisateur particulier. le type de liste est ArrayList, c'est comme ça que ça doit être, encore une fois, mes supérieurs me l'ont dit. D'autre part, j'ai besoin d'une autre classe appelée RequestForFile (String fileName) qui a pour but de rechercher un certain fichier dans ArrayLists de fichiers de tous les utilisateurs qui sont connectés au moment de la recherche.
Voici comment cela devrait ressembler, et c'est là que j'ai particulièrement besoin de votre aide parce que je reçois une erreur et je ne peux pas terminer la classe.
import java.util.ArrayList;
public class RequestForFile {
public RequestForFile(String fileName) {
User user = new User("Slavisha", "84.82.0.1");
ArrayList<User> listOfUsers = new ArrayList();
listOfUsers.add(user);
for (User someUser : listOfUsers) {
for (String request : User.fileList()) {
if (request.equals(fileName))
System.out.println(someUser + "has that file");
}
}
}
}
L'idée est pour l'utilisateur de regarder parmi les listes d'autres utilisateurs et retourner à l'utilisateur (s) avec un emplacement d'un fichier désiré. Interface graphique de côté pour l'instant, je vais y arriver quand je répare ce problème. Toute aide appréciée. Merci Je suis ici pour répondre à n'importe quoi à ce sujet.
L'erreur est-elle un secret? Si non, aimeriez-vous le partager? –
dans la "ligne 14: pour (Chaîne request: User.fileList()) {" Je reçois cette erreur: "type void non autorisé ici" et aussi "foreach non applicable au type d'expression" – AmateurProgrammer
Aux programmeurs amateurs: les erreurs disent quelque chose à propos de la cause profonde du problème. Vous ne devriez certainement pas les ignorer, mais les interpréter. Si vous ne le pouvez pas, partagez-les avec nous afin que nous puissions vous aider à les interpréter. Vous savez, une fois qu'une cause racine est * comprise *, la solution est * évidente *. – BalusC