Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как оформить чтение строки из файла в java?

Алена Ученик (112), на голосовании 1 год назад
Есть код, там вводится строка вручную, нужно это как-то убрать и сделать чтение из файла. Еще у меня есть код, который реверсируют строку, нужно тоже его приспособить. Помогите, пожалуйста!
 import javax.swing.*; 
import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class ReplacingTextDemo {
private static final int WIDTH = 480;
private static final int HEIGHT = 320;
private static final int GAP = 8;
private static final int INNER_WIDTH = WIDTH - 2 * GAP;
private static final int SMALL_HEIGHT = 24;
private static final int LARGE_HEIGHT = 100;

public static void main(String[] args) {
JFrame frame = new JFrame("Замена текста");

frame.setLayout(new FlowLayout(FlowLayout.LEFT, GAP, GAP));
frame.getContentPane().setPreferredSize(new Dimension(WIDTH, HEIGHT));

// Поле для текста
JTextArea inputArea = new JTextArea("Мама мыла раму");
inputArea.setLineWrap(true);

// Поле для буквы, которую нужно заменить
JTextField charField = new JTextField("а", 5);
charField.setEditable(false);
charField.setHorizontalAlignment(JTextField.CENTER);

addColoredFocus(charField, Color.ORANGE);


JTextArea resultArea = new JTextArea("");
resultArea.setEditable(false);
resultArea.setLineWrap(true);

frame.add(fullWidth(new JLabel("Введите текст:")));
frame.add(high(new JScrollPane(inputArea)));
frame.add(new JLabel("Введите букву для замены:"));
frame.add(charField);
frame.add(fullWidth(new JLabel("Результат:")));
frame.add(high(new JScrollPane(resultArea)));

// Чтобы не повторять код замены букв на решетки, вынесем этот код в Runnable.
// Это не обязательно, но мне так больше нравится.
Runnable replaceAction = () -> resultArea.setText(inputArea.getText().replace(charField.getText(), "#"));
// Сразу запустим замену, чтобы результат был виден при запуске программы
replaceAction.run();


charField.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {

if (e.getKeyChar() >= 32) {

charField.setText(String.valueOf(e.getKeyChar()));

replaceAction.run();
}
}
});


inputArea.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
replaceAction.run();
}
});

frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

private static void addColoredFocus(JTextField field, Color color) {
Color defaultColor = field.getBackground();
field.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
field.setBackground(color);
}

@Override
public void focusLost(FocusEvent e) {
field.setBackground(defaultColor);
}
});
}


private static JComponent fullWidth(JComponent c) {
c.setPreferredSize(new Dimension(INNER_WIDTH, SMALL_HEIGHT));
return c;
}

private static JComponent high(JComponent c) {
c.setPreferredSize(new Dimension(INNER_WIDTH, LARGE_HEIGHT));
return c;
}
}
Дополнен 1 год назад
/*
class reverse{
public static String reverse(String inputString){
int stringLength = inputString.length();
String result = "";
for (int i = 0; i < stringLength; i++){
result = inputString.charAt(i) + result;
}
return result;
}
}
*/
Голосование за лучший ответ
dra Профи (719) 1 год назад
Чтение строки из файла в Java можно оформить с помощью класса java.io .BufferedReader. Вот пример кода:

import java.io .BufferedReader;
import java.io .FileReader;
import java.io .IOException;

public class ReadFromFile {
public static void main(String[] args) {
String fileName = "file.txt";
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.err.format("IOException: %s%n", e);
}
}
}
В этом примере мы создаем объект BufferedReader и передаем ему объект FileReader, который содержит имя файла для чтения. Мы затем используем цикл while для чтения каждой строки файла и выводим ее на экран. Важно также обработать возможные исключения, которые могут возникнуть при чтении файла, используя блок try-catch.
АленаУченик (112) 1 год назад
как этот код добавить в мой код? И еще у меня есть class, который реверсирует строку, как его приспособить? Помогите, пожалуйста
draПрофи (719) 1 год назад
До этого public class ReplacingTextDemo { вставь должно сработать
Алена Ученик (112) Дмитрий захаров, увы, нет
твой интимный гусь Мудрец (10290) 1 год назад
Возможно как-то так я не шарю по java и не проверял данный код(не описан полный функционал) + это не полный код а часть которую нужно добавить
 import java.io .BufferedReader; 
import java.io .FileReader;
import java.io .IOException;
public static void reprevers(String fileName, boolean rev)
{
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String result;
String lines;
while ((lines = br.readLine()) != null) {
if(rev == 0){
result += lines.replace(charField.getText(), "#") + "\n";
}
else
{
result += reverse(lines.replace(charField.getText(), "#")) + "\n";
}

}
} catch (IOException e) {
System.err.format("IOException: %s%n", e);
}
return result;
}

public static String reverse(String inputString){
int stringLength = inputString.length();
String result = "";
for (int i = 0; i < stringLength; i++){
result = inputString.charAt(i) + result;
}
return result;
}
// Чтобы не повторять код замены букв на решетки, вынесем этот код в Runnable.
// Это не обязательно, но мне так больше нравится.
Runnable replaceAction = () -> resultArea.setText(reprevers('file.txt', 1);
// Сразу запустим замену, чтобы результат был виден при запуске программы
replaceAction.run();
АленаУченик (112) 1 год назад
а в какое место кода это вставить?
Похожие вопросы