Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Построчное считывание из конфига
#1
Здравствуйтте!!

Подскажите пожалуйста, как сделать построчное считывание из какого-нибудь файла( допустим конфига)

1) для строк

В этом конфиге не будет ничего кроме построчных записей:

Код:
Player1
Player2
Othername
Etc

2) для Int переменных

Вид конфига:

Код:
51351
234230
10951
12301
20353

...

А затем записать прочитанные строки/инты в мои переменные определенного класса:

Код:
public class Myexclass
{
private static final int[] intsFromCfg = { ? }
public static final String[] namesFromCfg = { ? }
...
}

Как это сделать? Помогите разобраться.Спасибо за проявленную помощь!!!!!
[Изображение: ck.gif]
Ответ
#2
FileUtils от апача.
java.util.List<java.lang.String> readLines(java.io.File file)
Web программист\разработчик

— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Ответ
#3
Или стандартными средствами)

Код:
    public static List<String> loadFile(String path)
    {
        LineNumberReader lnr = null;
        List<String> _list = new ArrayList<String>();
        try
        {
            lnr = new LineNumberReader(new BufferedReader(new FileReader(new File(path))));
            String line = null;

            while((line = lnr.readLine()) != null)
                if(!line.startsWith("//") && !line.startsWith("#"))
                    _list.add(line);
            return _list;
        }
        catch(FileNotFoundException e)
        {
            return null;
        }
        catch(Exception e)
        {
            return null;
        }
        finally
        {
            try
            {
                if(lnr != null)
                    lnr.close();
            }
            catch(Exception e1)
            {
                return null;
            }
        }
    }
open-team.ru - Freya, HighFive...
Ответ
#4
DiagoD Написал:Или стандартными средствами)

Код:
    public static List<String> loadFile(String path)
    {
        LineNumberReader lnr = null;
        List<String> _list = new ArrayList<String>();
        try
        {
            lnr = new LineNumberReader(new BufferedReader(new FileReader(new File(path))));
            String line = null;

            while((line = lnr.readLine()) != null)
                if(!line.startsWith("//") && !line.startsWith("#"))
                    _list.add(line);
            return _list;
        }
        catch(FileNotFoundException e)
        {
            return null;
        }
        catch(Exception e)
        {
            return null;
        }
        finally
        {
            try
            {
                if(lnr != null)
                    lnr.close();
            }
            catch(Exception e1)
            {
                return null;
            }
        }
    }

до сих пор под 6-ю яву код пишете?:di:

Код:
    public static List<String> loadFile(String path)
    {
        List<String> _list = new ArrayList<String>();
        try (LineNumberReader lnr = new LineNumberReader(new BufferedReader(new FileReader(new File(path)))))
        {
            
            String line = null;
            
            while((line = lnr.readLine()) != null)
                if(!line.startsWith("//") && !line.startsWith("#"))
                    _list.add(line);
            
            return _list;
        }
        catch(Exception e)
        {
            return null;
        }
    }
Ответ
#5
linliss Написал:до сих пор под 6-ю яву код пишете?:di:

Код:
    public static List<String> loadFile(String path)
    {
        List<String> _list = new ArrayList<String>();
        try (LineNumberReader lnr = new LineNumberReader(new BufferedReader(new FileReader(new File(path)))))
        {
            
            String line = null;
            
            while((line = lnr.readLine()) != null)
                if(!line.startsWith("//") && !line.startsWith("#"))
                    _list.add(line);
            
            return _list;
        }
        catch(Exception e)
        {
            return null;
        }
    }

Угу, на 7-ю даже не глядел толкомBig Grin
open-team.ru - Freya, HighFive...
Ответ
#6
LineReader это тоже где-то у палеолита, он не для этого предназначен, хоть и можно в таком амплуа использовать.
Первый вариант, для чтения/обработки/возможного сохранения списка где-либо, кушает память, объем файла лимитирован

Код:
    private void test1() {
        Path path = FileSystems.getDefault().getPath("./file.txt");
        try {
            List<String> lines = Files.readAllLines(path, Charset.forName("UTF-8"));
            for (String ln : lines) {
                System.out.println("line: "+ln);
            }
            lines.clear();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Обработка строк сразу, сможет переварить файл любого размера
Код:
    private void test2() {
        Path path = FileSystems.getDefault().getPath("./file.txt");
        try (BufferedReader reader = Files.newBufferedReader(path, Charset.forName("UTF-8"))) {
            String ln = null;
            while ((ln = reader.readLine()) != null) {
                System.out.println("line: "+ln);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Учитывая автора темы, у него фигурируют ники игроков - а это обязывает к utf8
Ответ
#7
KID Написал:LineReader это тоже где-то у палеолита, он не для этого предназначен, хоть и можно в таком амплуа использовать.
а как же тогда номер текущей строки узнать?
Ответ
#8
linliss Написал:а как же тогда номер текущей строки узнать?

например int lineId, но для этой задачи твой вариант подойдет

ТСу.
Код:
    private String[] getStringArrays(String file) {
        String[] array = null;
        Path path = FileSystems.getDefault().getPath(file);
        try {
            List<String> lines = Files.readAllLines(path, Charset.forName("UTF-8"));
            array = lines.toArray(new String[lines.size()]); lines.clear();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        return array;
    }
    
    private int[] getIntArray(String file) {
        int[] array = null;
        Path path = FileSystems.getDefault().getPath(file);
        try (BufferedReader reader = Files.newBufferedReader(path, Charset.defaultCharset())) {
            List<Integer> list = new ArrayList<Integer>(0);
            String ln = null;
            while ((ln = reader.readLine()) != null) {
                list.add(Integer.valueOf(ln));
            }
            
            if(!list.isEmpty()) {
                array = new int[list.size()];
                for(int i = 0; i < array.length; i++) {
                    array[i] = list.get(i);
                }
                list.clear();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return array;
    }
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Настройка Ipconfig помощь в настройке конфига на сборке L2JServer_Rev_7666 vvkk 11 10,052 05-20-2013, 01:39 PM
Последний пост: GreshnIC
  Как изменить вид конфига? dbnfkbr33 21 3,801 02-21-2012, 04:15 PM
Последний пост: extend
  Ошибка ГС[загрузка конфига] Effas 4 2,257 11-04-2011, 12:20 AM
Последний пост: Effas
  Проблема конфига рейтов [STIGMATED] 2 2,353 12-02-2008, 06:18 PM
Последний пост: DarkLoki

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)