Открытие файлов.

Модератор: Absurd

Ответить
develprog
Сообщения: 18
Зарегистрирован: 27 май 2016, 10:54

27 май 2016, 14:00

Не получается сделать так что бы "TXT" файл открывался и содержимое выводилось в JTextArea. Желательно помочь кодом.

Код:

Код: Выделить всё

mi1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent event) {
JFileChooser fileopen = new JFileChooser();
int ret = fileopen.showDialog(null, "Открыть файл"); 
if (ret == JFileChooser.APPROVE_OPTION) {
}
}
});
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

27 май 2016, 14:23

Выполняешь в браузере?
Даже самый дурацкий замысел можно воплотить мастерски
develprog
Сообщения: 18
Зарегистрирован: 27 май 2016, 10:54

27 май 2016, 14:29

AiK писал(а):Выполняешь в браузере?

нет. NetBeans.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

27 май 2016, 15:25

А в чём загвоздка? Получить выбранный файл - метод getSelectedFile() у файлчузера, Прочитать файл в строку - штук 5 разных способов есть.
Даже самый дурацкий замысел можно воплотить мастерски
develprog
Сообщения: 18
Зарегистрирован: 27 май 2016, 10:54

27 май 2016, 15:36

AiK писал(а): метод getSelectedFile()

Уже нашел как открыть файл, только другим способом, осталось сделать правильную кодировку алфавита и вывод в JTextArea.

Вот код который открывает файл :

Код: Выделить всё

 File f = fileopen.getSelectedFile();
            try(FileReader reader = new FileReader(f)) 
         {
          char[] buffer = new char[(int)f.length()];
            reader.read(buffer);
            System.out.println(new String(buffer));
         }
         catch(IOException tx){
           System.out.println(tx.getMessage());
        }
            }
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

27 май 2016, 16:01

Попробуй

Код: Выделить всё

reader =   new InputStreamReader(new FileInputStream(f), "UTF-8");
Даже самый дурацкий замысел можно воплотить мастерски
develprog
Сообщения: 18
Зарегистрирован: 27 май 2016, 10:54

27 май 2016, 16:47

AiK писал(а):

Код: Выделить всё

reader =   new InputStreamReader(new FileInputStream(f), "UTF-8");

Не получилось. Поменял просто свойства проекта в NetBeans, кодировку с UTF-8 на windwos 1251, выводит все как надо, но сомнительно, что будет работать на других компьютерах без нужного кода.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

27 май 2016, 19:13

Смотри. У тебя есть две кодировки. Одна кодировка содержимого файла, а вторая - компонента, в который ты выводишь это содержимое. У компонент для вывода лучше иметь кодировку UTF-8. Ну а файл может быть произвольной кодировки. Сейчас у тебя программа работает только если всё в кодировке cp1251.
Даже самый дурацкий замысел можно воплотить мастерски
develprog
Сообщения: 18
Зарегистрирован: 27 май 2016, 10:54

27 май 2016, 20:38

AiK писал(а):. У компонент для вывода лучше иметь кодировку UTF-8. Ну а файл может быть произвольной кодировки. Сейчас у тебя программа работает только если всё в кодировке cp1251.

Теперь понятно. Осталось додуматься как сделать вывод в UTF-8.
develprog
Сообщения: 18
Зарегистрирован: 27 май 2016, 10:54

01 июн 2016, 13:52

AiK писал(а): всё в кодировке cp1251.

А какую установить кодировку в JTextArea? Какую бы не ставил выводит все равно квадратами .

Код :
File f = fileopen.getSelectedFile();
try (Reader reader = new InputStreamReader(new FileInputStream(f), "Cp1251"))
{
char[] buffer = new char[(int)f.length()];
reader.read(buffer);
tx.read( new FileReader( f.getAbsolutePath() ), null );
}
catch(IOException tx){
System.out.println(tx.getMessage());
}
}
});
Ответить