2016-12-02 11 views
0

Я пытаюсь сделать программу входа/пароля, которая запрашивает у вас учетную запись, и вы также можете ее создать.
Под учетной записью я имею в виду, что программа даст вам случайное 8-значное число.
У меня также есть FileWriter, который создает файл на основе ID, который вы указали. И у меня есть FileReader, который в конечном итоге прочитает то, что вы ранее экспортировали в свой файл, чтобы вы могли его обновить.Как сравнить целое число и имя файла?

Проблема заключается в том, что когда я спрашиваю у пользователя, есть ли у них учетная запись, если они говорят «да», она будет запрашивать у пользователя свой идентификатор пользователя.

Мой план состоял в том, что при чтении вашего UserID он сканировал бы папку, в которой был сохранен мой .java-файл, и искать файл .txt с тем же именем, что и ваш UserID. Например, если вы создаете учетную запись и пользовательский идентификатор, который он дает вам, это 12345678, он создаст файл с именем 12345678, а затем, когда вы введете свой UserID, он будет сканировать, чтобы увидеть, существует ли этот файл.

В настоящее время проблема, которая возникает это она печатает

файл Ошибка Не найден (подвох Строка я написал)

, даже если у меня есть файл в папке.
Я думаю, что что-то не так с тем, как я сравниваю, чтобы узнать, совпадает ли UserID с любым именем файла.

Класс «Логин».

import java.awt.*; 
import hsa.Console; 
import java.util.Random; 
import java.io.*; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.FileReader; 
import java.io.FileNotFoundException; 

public class Login 
{ 
static Console c; 

static Login player1; 

public static void main (String[] args) 

{ 
    player1 = new Login(); 
    player1.FileReaderTest (25756326); 
    //player1.Userlogin(); //I think it has something to do with this 
} // main method 


public void Userlogin (File input) 
{ 
    c = new Console(); 

    Random rand = new Random(); 

    c.println ("Hello do you have an account?"); 
    String Q1 = c.readLine(); 
    Q1 = Q1.toUpperCase(); 
    if (Q1.equals ("YES")) 
    { 
     c.println ("Please input your User ID"); 
     int login = c.readInt(); 
     if (String.valueOf(login).equals (input))//I think it has something to do with this 
     { 
      try 
      { 
       FileReader reader = new FileReader (input); 
       BufferedReader buf = new BufferedReader (reader); 

       String line1 = buf.readLine(); 
       String line2 = buf.readLine(); 

       buf.close(); 
       c.println (line1); 
       c.println (line2); 

      } 
      catch (FileNotFoundException e) 
      { 
       c.println ("Error File Not Found"); 

      } 
      catch (Exception e) 
      { 
       c.println ("ERROR"); 

      } 


     } 
    } 

    else if (Q1.equals ("NO")) 
    { 
     c.println ("Please enter your name "); 
     String name = c.readLine(); 
     int UserID = rand.nextInt (99999999); 
     c.println ("Your User ID is " + UserID); 
     player1.FileCreation (UserID); 
     player1.FileReaderTest (UserID); 
    } 

    while (!Q1.equals ("YES") && !Q1.equals ("NO")) //While Q1 != YES || NO 
    { 
     c.println ("Please Answer the question with Yes or No"); 
     c.println ("Hello do you have an account?"); 
     String Q2 = c.readLine(); 
     Q2 = Q2.toUpperCase(); 
     if (Q2.equals ("YES")) 
     { 
      c.println ("Ok lets start"); 
      break; 
     } 
     else if (Q2.equals ("NO")) 
     { 
      c.println ("Please enter your name "); 
      String name = c.readLine(); 
      int UserID = rand.nextInt (89999999) + 10000000; 
      c.println ("Your User ID is " + UserID); 
      player1.FileCreation (UserID); 
      player1.FileReaderTest (UserID); 
      break; 
     } 

    } //While Q1 != YES || NO 



} //Public void Main 


public void FileReaderTest (int UserID) 
{ 
    File input = new File (String.valueOf (UserID)); 
    player1.Userlogin (input); 

    try 
    { 
     FileReader reader = new FileReader (input); 
     BufferedReader buf = new BufferedReader (reader); 

     String line1 = buf.readLine(); 
     String line2 = buf.readLine(); 


     buf.close(); 
     c.println (line1); 
     c.println (line2); 

    } 
    catch (FileNotFoundException e) 
    { 
     c.println ("Error File Not Found"); 

    } 
    catch (Exception e) 
    { 
     c.println ("ERROR"); 

    } 




} 


public void FileCreation (int UserID) 
{ 
    try 
    { 
     Writer writer = new BufferedWriter (new OutputStreamWriter (new FileOutputStream (String.valueOf (UserID)), "utf-8")); 
    } 
    catch (IOException ex) 
    { 
    } 
} 
} // Login class 
+1

Как вы можете сравнить String с файлом? –

+0

Я не знаю, что делает этот класс 'hsa.Console'. –

+0

вам нужно сравнить его с именем файла вместо файла – Jobin

ответ

1

Итак, у вас есть File input, и вы хотите сравнить имя файла, так что вы вместо этого хотите

String.valueOf(login).equals (input.getName()); 

Если вы получаете ошибку на

File input = new File (String.valueOf (UserID)); 

, то примечание: "2.txt", например, сильно отличается от файла с именем "2" (что стоит упомянуть потому что Windows скрывает расширения файлов по умолчанию)

И если вы не даете полный путь к файлу, то этот файл должен находиться в вашем «classpath», который, если вы не понимаете, лучше дать полный путь к файлу.

0

FileNotFound не выбрасывается после сравнения, а ваш FileReader при его создании. FileReader сообщает вам, что нет имени файла как такового. Поскольку вы сказали, что создали файл, может быть несколько пояснений:

  • Возможно, файл, который вы создали, находится в неправильной папке. Папка по умолчанию для java-программы - это папка проекта. Убедитесь, что у вас есть файл в правой папке. Кроме того, вы можете указать полный путь в качестве аргумента для FileReader: «/my/full/path/filename.extension».
  • Это также может быть проблемой расширения. Если вы используете ОС Windows, расширение может быть скрыто в проводнике файлов. Щелкните правой кнопкой мыши файл и проверьте, существует ли такое расширение (например: .txt).

В конце концов вы можете открыть файл с помощью FileWriter под Java и попытаться создать файл в вашей программе.Вы увидите, какой файл Java пытается получить, и он поможет вам определить вашу проблему.

0

Поскольку вы упомянули, что вам нужно создать текстовый файл, связанный с UserId, я бы предложил добавить ".txt" в FileReaderTest class. Что-то похожее на это:

File input = new File (String.valueOf (UserID)+".txt"); 

Или удобней

File input = new File (Integer.toString(UserID)+".txt"); 

Я думаю, что это решает ваш запрос.