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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как прочитать текстовый файл, в String[] 
V
    Опции темы
Egnech
Дата 8.2.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



День добрый. Сталкнулся с такой проблеммой. Нужно написать функцию, которая будет загружать txt'шку, и возвращать массив String[].
Ошибка возникает при запуске приложения, когда пытается привести char к String. Вот код:
Код

    InputStream file;
    String res[] = null;
    Vector  temp = new Vector ();
    int counter = 0;
    try{            
    file = new FileInputStream(aFile);
    while (file.available() > 0) {
    temp.add((char)file.read());
        counter ++;
    }
    }catch (Exception e) {
      e.printStackTrace();
  }                
    res = new String [counter];    
    for (int i = 0; i < counter; i ++){
        res[i] = (String) temp.get(i);
    }
    return res;

Подскажите пожалуйста как решить мою проблему.
PM MAIL ICQ   Вверх
Kangaroo
Дата 8.2.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Код

        BufferedReader reader = new BufferedReader(new FileReader("myNotes.txt"));
        String line = null;
        List<String> listOfLines = new ArrayList<String>();
        while ((line = reader.readLine()) != null) {
            listOfLines.add(line);
        }
        String[] arrayOfString = new String[listOfLines.size()];
        listOfLines.toArray(arrayOfString);



--------------------
Lost....
PM MAIL MSN   Вверх
oFF_rus
Дата 8.2.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Egnech, не хочу указывать на ошибку в Вашем коде, потому что Вы неправильно выбрали сам принцип:

A FileInputStream obtains input bytes from a file in a file system
т.е. он используется для чтения байтов! А чтобы читать символы (char) используются ридеры:
FileReader - Convenience class for reading character files

А чтобы читать тестовые файлы, удобнее всего использовать BufferedReader:
Read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines. 

Именно пример использования BufferedReader привёл Kangaroo smile

PM MAIL   Вверх
_Y_
Дата 8.2.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

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



Код

String res[] = new String[counter];
int i = 0;
try {
     BufferedReader in = new BufferedReader(new FileReader("filename"));
     String str;
     while ((str = in.readLine()) != null) {
         res[i++] = str;
     }
     in.close();
} catch (IOException e) {
}


Но выглядит это глуповато, т.к. читать файл приходится 2 раза. Я бы читал не в массив, а в ArrayList:
Код

ArrayList<String> res = new ArrayList<String>();
try {
     BufferedReader in = new BufferedReader(new FileReader("filename"));
     String str;
     while ((str = in.readLine()) != null) {
         res.add(str);
     }
     in.close();
} catch (IOException e) {
}





--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Egnech
Дата 8.2.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо большое, заработало =)
PM MAIL ICQ   Вверх
Noobless
Дата 2.3.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте.
Только начал разбираться с джавой, возникла в некоторой степени похожая проблема.

Нужно открыть текстовый файл и прочитать оттуда набор строк.
Делаю так.

Метод main()
Код

...
ObjClass c1;
c1 = new ObjClass();
c1.loadModels("c1.txt");
...


Класс ObjClass
Код

...
public void loadModels(String fn){
    try{
        BufferedReader f = new BufferedReader(new FileReader(fn));
...


Вот тут он и выкидывает исключение (если убрать try и соответствующие строки ниже)
Код

Compiling 1 source file to C:\Documents and Settings\user\Мои документы\NetBeansProjects\PatternRecognition_1\build\classes
C:\Documents and Settings\user\Мои документы\NetBeansProjects\PatternRecognition_1\src\PatternRecognition_1\ObjClass.java:22: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown


Файл точно есть. Использую NetBeans. Там куда только не кидал его в папке проекта. Пробовал даже просто на диск ц и прямо путь к нему указывать. И все равно - не найден, и все.

Что я делаю не так? smile 
PM MAIL   Вверх
Hidrag
Дата 2.3.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



он не выкидывает исключение он говорит что нужно обработать возможную ошибку. Обычно нетбинс в этом сильно помогает, странно..


--------------------
user posted image
PM WWW ICQ   Вверх
sergioK
Дата 3.3.2008, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 207
Регистрация: 15.2.2008

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



Цитата(Noobless @ 2.3.2008,  17:34)
Здравствуйте.
Только начал разбираться с джавой, возникла в некоторой степени похожая проблема.

Нужно открыть текстовый файл и прочитать оттуда набор строк.
Делаю так.

Метод main()
Код

...
ObjClass c1;
c1 = new ObjClass();
c1.loadModels("c1.txt");
...


Класс ObjClass
Код

...
public void loadModels(String fn){
    try{
        BufferedReader f = new BufferedReader(new FileReader(fn));
...


Вот тут он и выкидывает исключение (если убрать try и соответствующие строки ниже)
Код

Compiling 1 source file to C:\Documents and Settings\user\Мои документы\NetBeansProjects\PatternRecognition_1\build\classes
C:\Documents and Settings\user\Мои документы\NetBeansProjects\PatternRecognition_1\src\PatternRecognition_1\ObjClass.java:22: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown


Файл точно есть. Использую NetBeans. Там куда только не кидал его в папке проекта. Пробовал даже просто на диск ц и прямо путь к нему указывать. И все равно - не найден, и все.

Что я делаю не так? smile

Жава обязывает обрабабывать исключения , там где они могут возникнуть,
и не только при работе с файлами , это на уровне компиляции,  а есть файл 
или нет - уровень исполнения,


PM MAIL   Вверх
Noobless
Дата 3.3.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(sergioK @ 3.3.2008,  00:31)
Жава обязывает обрабабывать исключения , там где они могут возникнуть,
и не только при работе с файлами , это на уровне компиляции,  а есть файл 
или нет - уровень исполнения,

Вот оно что... Спасибо за инфу.
Как выяснилось, основная ошибка была в специфике джавовских типов и их инициализации. smile

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

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

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


 




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


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

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