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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в файл с переходом на другую строку 
:(
    Опции темы
Syltan
Дата 22.6.2010, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не происходит переход на др. строку каждой строчки, при записи в файл test1, вот пишу такой код:
Код

package u;

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

public class IOClass {
    public static void main(String[] args) throws FileNotFoundException, IOException {      
        IOClass io = new IOClass();
        //Читать из файла
        //Писать в файл  
        io.processingFiles();
     }

    private void processingFiles() throws FileNotFoundException, IOException {
        FileReader fr = new FileReader("G:\\temp\\test.txt");
        BufferedReader br = new BufferedReader(fr);
        String str = br.readLine();
        String result = "";
        while (str != null) {
            result += "\n"+ str;
            str = br.readLine();
            //System.out.println();
        }
        FileWriter fw = new FileWriter("G:\\temp\\test1.txt");
        fw.write(result);
        fw.close();
        fr.close();
        br.close();
    }
    
}




Это сообщение отредактировал(а) Syltan - 22.6.2010, 11:34
PM MAIL   Вверх
Skipy
Дата 22.6.2010, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вопрос на засыпку. Какое сочетание символов переводит строку в Windows? Это первое.

Второе. Сложение строк в цикле - лучший способ убить производительность. Используйте StringBuilder.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
chaos
Дата 22.6.2010, 13:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


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

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



Цитата(Skipy @  22.6.2010,  09:02 Найти цитируемый пост)
Какое сочетание символов переводит строку в Windows? 

\n
PM WWW   Вверх
AbdulBcex
Дата 22.6.2010, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот кстати "\n" помогает не всегда.
Сам лично сталкивался, к примеру:
Код

FileWriter fw = new FileWriter(setup, false);
BufferedWriter bf = new BufferedWriter(fw);
....
bf.write(element.name() + " (" + element.type() + ")\r\n");
bf.write(element1.name() + " (" + element2.type() + ")\r\n");
...


Если все эти строки выводить в .txt файл, то  перехода с помощью "\n" не будет. Выручит только добавление "\r" - символа возврата каретки.

Что это так, знаю, но не особо уверен почему. Наверное, связано с тем, что в конструкторе FileWriter атрибут append обозначен как false. Если кто лучше знает, поправьте, пожалуйста.
PM MAIL   Вверх
Dummy
Дата 22.6.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть метод BufferedWriter.newLine(), который и пишет платформенно-зависимый разделитель строк в нижележащий Writer.

Код

FileWriter fw = new FileWriter(setup, false);
BufferedWriter bf = new BufferedWriter(fw);
....
bf.write(element.name() + " (" + element.type() + ")");
bf.newLine();
bf.write(element1.name() + " (" + element2.type() + ")");
bf.newLine();


Если не хочется использовать BufferedWriter, то можно использовать System.getProperty("line.separator") - он вернёт заветную последовательность символов для перевода строки. По спеке, BufferedWriter.newLine() использовует именно это свойство.

Это сообщение отредактировал(а) Dummy - 22.6.2010, 16:57
PM MAIL   Вверх
Syltan
Дата 22.6.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Подскажите, как в данном коде сделать так, чтоб записывалось в файл текст1.тхт то, что я введу с клавиатуры в массиве этой программы.

Код

package u;
//Нужен для того чтоб можно было хранить строки в себе
import java.io.BufferedReader;
//Это исключение создается, когда попытка доступа к файлу,
//не существующему на диске, заканчивается неудачей
import java.io.FileNotFoundException;
//Чтоб можно было чиать тектсовой файл
import java.io.FileReader;
//Чтоб можно было записывать в  тексотовой файл
import java.io.FileWriter;
import java.io.IOException;

public class IOClass {
final private static int N = 50;
    final private static java.io.BufferedReader jin =
// new java.io.InputStreamReader(System.in) – это ссылка на объект класса InputStream
//в качестве параметра конструктора BufferedInputStream
        new java.io.BufferedReader(new java.io.InputStreamReader(System.in));

  private double processingFiles(double t1, double t2) throws FileNotFoundException, IOException {
        //Указываю путь на который будет ссылаться объект fr

        FileReader fr = new FileReader("G:\\temp\\test.txt");
        //Объект br будет хранить в себе строки на которые ссылается объект fr
        BufferedReader br = new BufferedReader(fr);
        //Переменная str получает содержимое файла
        String str = br.readLine();
        String result = "";
        //Пока переменная str не равна нулевой строке из файла test.txt
        while (str != null) {

        //lineSeparator - Переменная которая будет делать перевод строки
            String lineSeparator = System.getProperty("line.separator");
             //Тогда в перменную result которая изначально равна нулю
            //присвоить эту строку и записать  в эту перменную
            result += lineSeparator+ str;
            //Снова прочитать строку
            str = br.readLine();
            //System.out.println();
        }
        //Создается обьект типа FileWriter
       //Его конструктору передается имя файла, чтоб
       //сразу его создать и открыть для записи

        FileWriter fw = new FileWriter("G:\\temp\\test1.txt");
        //Записываем в текстовой файл test1 содержимое всех строки из файла test.txt
        fw.write(result);
        //Закрываем потоки
        fw.close();
        fr.close();
        br.close();
        return 0;
    }

    private static double min_rad(double x[], double y[], int n)  {
        double min = 0;
        double temp;
        int i;
                for (i = 0; i < n; i++)
               //Если значание темп больше минимума
            if ((temp = Math.sqrt(x[i] * x[i] + y[i] * y[i])) > min)
                    //Тогда минимуму присвоить темп
            min = temp;
        return min; //Вызвать минимум и передать аргументом функции
    }
    public static void main(String[] args) throws java.io.IOException {
            IOClass io = new IOClass(); 
            int n;
             //Объявляю 2 масива которыее могут содержать
            //не более 50 действительных чисел каждый
        double x[] = new double[N],
               y[] = new double[N];
        double radius;
        int i;
        System.out.print("Input n: ");
            //Здесь происходит ввод количества натуральных чисел
        n = Integer.parseInt(jin.readLine());

            //Цикл нужен для того, чтоб каждое число мы вводили с клавиатуры
        for (i = 0; i < n; i++)
        {
         System.out.print("Input x[" + i + "]: ");

         x[i] = Double.parseDouble(jin.readLine());
            System.out.print("Input y[" + i + "]: ");
            y[i] = Double.parseDouble(jin.readLine());
                io.processingFiles(x[i], y[i]);
        }


            //Вызываю функцию min_rad и присваиваю её значение перменной radius
            radius = min_rad(x, y, n);
            //Вывожу радиус найменьшего круга
            System.out.println("Minimum radius: " + radius);
            System.out.println("Введите строку");
        }
}




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.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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