Печать в файл всех типов данных (регистратор) - PullRequest
0 голосов
/ 25 июня 2018

У меня есть файл класса с методом, который принимает строковый аргумент и выводит в файл:

public static void logger(String content) {

    FileOutputStream fop = null;
    File file;
    //content = "This is the text content";


    try {

        file = new File("logs.txt");
        fop = new FileOutputStream(file);

        // if file doesnt exists, then create it
        if (!file.exists()) {
            file.createNewFile();
        }

        // get the content in bytes
        byte[] contentInBytes = content.getBytes();

        fop.write(contentInBytes);
        fop.flush();
        fop.close();

        System.out.println("Done");

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fop != null) {
                fop.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Я пытаюсь добавить запись трассировки во многие файлы с помощью этого метода, и она включает в себя не только строковые типы данных, но также удваивает и т. Д. Я не уверен, как бы я включил двойные / целые числа в это метод и вывод.

Я довольно новичок в Java, поэтому извиняюсь, если это на самом деле довольно тривиальная задача!

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вы можете получить String представление значений типа double, long и т. Д., Используя соответствующий им класс-оболочку.

Пример:

double doubVar = 12.643;
Logger.logger( Double.toString( doubVar ) );

или для целых чисел:

int i = 2;
Logger.logger( Integer.toString( i ) );
0 голосов
/ 25 июня 2018

Объявите второй метод, который принимает Object в качестве параметра.

public static void logger(Object content) {
    logger(content.toString());
}

Этот метод делегирует вашему более раннему методу запись строкового представления вашего объекта, независимо от его типа.

Теперь вы можете вызывать logger() для строк (например, logger("The answer"), а также для любого другого типа (например, logger(42)).

Обратите внимание, что бокс (упаковка примитивного типа, такого как int, в объект, такой как Integer) происходит автоматически.

Если вы хотите печатать более одного объекта за раз, вы должны предоставить метод, который принимает массив varargs.

public static void logger(Object... objects) {
    String msg = Stream.of(objects).map(Object::toString).collect(Collectors.joining());
    System.out.println(msg);
}

При вызове logger("The answer is ", 42) будет напечатано «Ответ 42».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...