私はJavaでFTPクライアントとサーバープログラミングの基礎を学んでいます。私は現在、クライアントからサーバーに登録されたユーザー名を格納するためにtxtファイルを使用して非常に簡単なログインシステムを実装しようとしています。Java - テキストファイルからすべての登録ユーザー名を読む
しかし、コンソールに登録されていることが示されているにもかかわらず、テキストファイルの最初に登録された行だけを読み取るという問題を発見しました。
私はtxtファイルに各行を読み込むと思われる読取りラインバッファードリーダーを使用してエラーを修正しようとしましたが、まだ固まっています。私が従うことができるアドバイスはありますか?私を助けてくれてありがとう。
スクリーンショット
FTPClient.java
class FTPClient
{
public static void main(String args[]) throws Exception
{
Socket soc=new Socket("127.0.0.1",5217);
transferfileClient t=new transferfileClient(soc);
t.userLogin();
}
}
class transferfileClient
{
Socket ClientSoc;
DataInputStream din;
DataOutputStream dout;
BufferedReader br;
transferfileClient(Socket soc)
{
try
{
ClientSoc=soc;
din=new DataInputStream(ClientSoc.getInputStream());
dout=new DataOutputStream(ClientSoc.getOutputStream());
br=new BufferedReader(new InputStreamReader(System.in));
}
catch(Exception ex)
{
}
}
void SendFile() throws Exception
{
//Send File from Client to Server
}
public void userLogin() throws Exception{
System.out.println("Press 1 to LOGIN or 2 to CREATE a new account");
System.out.print("\nEnter Choice :");
int choice;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
choice = Integer.parseInt(br.readLine());
if(choice==1)
{
validateUser();
}
else if(choice==2)
{
writeFileIO();
userBack();
}
}
void userBack() throws Exception {
userLogin();
}
void validateUser() throws Exception{
BufferedReader getIt = new BufferedReader(new InputStreamReader(System.in));
String userName = "";
try{
FileInputStream fstream = new FileInputStream("../FTPServer/userInfo.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
System.out.println("Enter your username");
userName = getIt.readLine();
while ((strLine = br.readLine()) != null){
if (userName.equals(strLine)){
System.out.print("Successful Login\n");
displayMenu();
}
else{
System.out.println("Invalid Username");
userBack();
}
}
in.close();
} catch (Exception e) {//Catch exception if any
System.out.println("\nError in validate user");
}
}
//Store new username into text file
public void writeFileIO()
{
while(true){
System.out.print("Enter your new username: ");
Scanner scan = new Scanner(System.in);
String text = scan.nextLine();
FileWriter fWriter = null;
BufferedWriter writer = null;
try{
fWriter = new FileWriter("../FTPServer/userInfo.txt", true);
writer = new BufferedWriter(fWriter);
writer.write(text);
writer.newLine();
writer.close();
System.out.println("Your new username has been created.");
return;
}
catch (Exception e) {
System.out.println("Error!");
}
}
//Successful login - show display menu for file transfer
public void displayMenu() throws Exception
{
while(true)
{
System.out.println("Files in directory");
System.out.println("=========================");
System.out.println("[ MENU ]");
System.out.println("1. Upload File");
System.out.println("2. Download File");
System.out.println("3. Delete File");
System.out.println("4. Exit");
System.out.print("\nEnter Choice :");
int menuchoice;
menuchoice=Integer.parseInt(br.readLine());
if(menuchoice==1)
{
dout.writeUTF("SEND");
SendFile();
}
else if(menuchoice==2)
{
dout.writeUTF("GET");
ReceiveFile();
}
else if(menuchoice==3)
{
dout.writeUTF("DEL");
}
else
{
dout.writeUTF("DISCONNECT");
System.exit(1);
}
}
}
}
ありがとうございました!出来た :) – tryingmybest