Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами, Сравнение символьных строк 
:(
    Опции темы
Лейсан
Дата 6.6.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.6.2005

Репутация: нет
Всего: нет



Текстовый документ имеет вид:
Логин1 Пароль1
Логин2 Пароль2
....
ЛогинN ПарольN
Пользователю предлагается ввести логин и пароль для проверки наличия этого логина и пароля в этом текстовом документе.
Как организовать сравнение строк(введенной пользователем и имеющейся в файле), с учетом того,
что в текстовом документе есть пробелы? Какие использовать для этого методы или функции???

Код:

import java.io.*;

class zad_dop
{
public static void main(String args[])
{
String LoginParol;
String userlogin;
String userparol;

String answer;
String result;

int kStrok = 0;


try
{
// Подсчет количества строк в документе
RandomAccessFile input = new RandomAccessFile("input.txt", "r");
String line = null;
while(input.readLine()!=null){ kStrok++; }
input.seek(0);



int i=0;

do
{
line = input.readLine();
if ( line != null )
{
LoginParol=line;
}

i++;

}
while(line != null);


BufferedReader userInput=new BufferedReader(new InputStreamReader(System.in));
DataOutputStream output =new DataOutputStream( new BufferedOutputStream( new FileOutputStream("output.txt")));

System.out.println("\nВведите логин для проверки его наличия в текстовом документе!!!");
userlogin=userInput.readLine();
System.out.println("\nТеперь введите пароль!!!");
userparol=userInput.readLine();
answer=userlogin+" "+userparol;
//System.out.println("\nanswer:"+answer);
for (i=0; i<kStrok; i++)
{
line = input.readLine();
if ( line != null )
{
LoginParol=line;

}
output.writeChars("Vash login: " + userlogin + "Vash parol: " + userparol+"\n" );





if (answer.equals(result))
{

System.out.println("Результат поиска: \n");
System.out.println("Логин "+ userlogin+"и пароль "+ userparol +"имеются в файле input.txt!"+"\n");
output.writeChars("\nЛогин "+ userlogin+"и пароль "+ userparol +"имеются в файле input.txt!"+"\n");
}
else
{
System.out.println("Результат поиска: \n");
System.out.println("Логин "+ userlogin+"и пароль "+ userparol +"в файле input.txt отсутствуют!"+"\n");
output.writeChars("\nЛогин "+ userlogin+"и пароль "+ userparol +"в файле input.txt отсутствуют!"+"\n");
}

}

output.close();

System.out.println("\nБолее подробный результат можно найти в файле output.txt");


}
catch (Exception e)
{
System.out.println(e.toString());
}



}
}



Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  zad_dop.java 2,31 Kb
PM MAIL   Вверх
DEER
Дата 6.6.2005, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



Попробуй так:
Код

 Properties props = new Properties();
     FileInputStream inF = new FileInputStream("users.users");
        props.load(inF);
        inF.close(); 
        String Usr = props.getProperty(Login);
        if(Usr==Passwrd)
        {
            System.out.print("OK");
        }
       else
        {
            System.out.print("NO");
        }

Login и Passwrd - это то что ввёл пользователь
В файле users.users храни значения в виде
Login1=Password1

Это сообщение отредактировал(а) DEER - 6.6.2005, 15:07


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
FatherFrost
Дата 6.6.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

Репутация: 5
Всего: 6



Может проще будет создать класс User.java:
Код

import java.io.Serializable;

public class User implements Serializable
{
  private final String userName, password;
  
  public User(String userName, String password)
  {
    this.userName = userName;
    this.password = password;
  }
  
  public User(String userName, String password)
  {
    this.userName = userName;
    this.password = password;
  }
  
  public String getUserName()
  {
    return userName;
  }
  
  public String getPassword()
  {
    return password;
  }
  
  public boolean equals (String uname, String pwd)
  {
    return getUserName().equals(uname) && getPassword().equals(pwd);
  }
}


А затем создать класс UsersBase, в котором будет создаваться Вектор, элементами которого будут экземпляры класса User:
Код

import java.io.Serializable;
import java.util.Iterator;
import java.util.Vector;

public class UsersBase implements Serializable
{
  private Vector users = new Vector();

  private User[] defaultUsers = 
  {
    new User("Юзер1","1234"),
    new User("Юзер2","1234"),
    new User("Юзер3","1234"),
  };
  
  public UsersBase()
  {
    for (int i = 0; i < defaultUsers.length; i++)
    {
      users.add(defaultUsers[i]);
    }
  }
  public void AddUser(String uname, String pwd)
  {
    users.add(new User(uname,pwd));
  }
  
  public User getUser(String uname, String pwd)
  {
    Iterator it = users.iterator();
    User bean;
    synchronized(users)
    {
      while (it.hasNext())
      {
        bean = (User)it.next();
        if (bean.equals(uname,pwd))
        {
          return bean;
        }
      }
    }
    return null;
  }
}


Здесь массив объектов User - муляж твоего файла. Тебе нужно читать из файла построчно, разбирать каждую строку на логин и пароль, а затем выполнять строку users.add(new User(login,password));. Синхронизация здесь предназначена для того, чтобы при многопотоковом обращении не вылетал ексепшин.

Это сообщение отредактировал(а) FatherFrost - 6.6.2005, 16:32


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
igon
Дата 7.6.2005, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: нет
Всего: 21



Цитата
В файле users.users храни значения в виде
Login1=Password1

Так как
Цитата
The key contains all of the characters in the line starting with the first non-white space character and up to, but not including, the first unescaped '=', ':', or white space character other than a line terminator.

формат хранения
Цитата
Логин1 Пароль1
Логин2 Пароль2
....
ЛогинN ПарольN

можно и не менять.
Вариант с Properties, ИМХО, вполне приемлемое решение. И - уж куда проще? smile



--------------------
Хотите поговорить об этом?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.