Как записать число в файл java
Перейти к содержимому

Как записать число в файл java

  • автор:

Как записать число в файл java

Для записи числа в файл можно вызвать метод append() из объекта класса Filewriter , передать в него наше число, попутно сконвертировав его в строку.

int number = 1; // Целое число // Создаем объект класса для записи в файл, передаем название файла, // указываем, что данные будут дозаписываться в конец // Используем конструкцию try-with-resources для автоматического закрытия потока try (FileWriter fileWriter = new FileWriter("example.txt", true))  fileWriter.append(String.valueOf(1)); // Записываем число в файл, конвертируя число в строку fileWriter.flush(); // Очищаем буфер потока > // Содержимое файла: 1 

Запись чисел в файл Java

Проблема в том, что в исходном файле » Letter.txt » вместо чисел непонятные знаки. Может как-то при записи чисел указывать кодировку ?

Отслеживать
3,001 1 1 золотой знак 16 16 серебряных знаков 38 38 бронзовых знаков
задан 13 янв 2016 в 13:44
83 2 2 золотых знака 2 2 серебряных знака 11 11 бронзовых знаков

Ваш код вызывает метод (write)[docs.oracle.com/javase/7/docs/api/java/io/…, который записывает символы по их аски кодам. Поэтому и непонятные символы.

13 янв 2016 в 13:56
Вы записали в файл не число. А байт который кроме как байта может иметь и -1 поэтому там тип Int.
4 апр 2017 в 21:41

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Метод java.io.FileWriter.write записывает в файл не строковое представление числа, а символ с кодом, содержащимся в этом числе. Естественно, что в файле появляются непонятные знаки. Чтобы правильно записать строковое представление чисел в файл, необходимо вначале это строковое представление получить. Для этого можно использовать метод Integer.toString . Нижеследующий код иллюстрирует применение этой техники.

import java.io.*; import java.util.Random; class Main < public static void main(String[] args) < int[] array = new int[10]; final Random random = new Random(); for (int i = 0; i < array.length; ++i) array[i] = random.nextInt(); try (final FileWriter writer = new FileWriter("C:/Temp/Letter.txt", false)) < for (int i = 0; i < array.length; ++i) < final String s = Integer.toString(array[i]); writer.write(s); writer.write(System.lineSeparator()); System.out.println(s); >> catch(IOException e) < System.out.println(e.getMessage()); >> > 

Отслеживать
ответ дан 13 янв 2016 в 14:26
user194374 user194374

Вот так будет правильно записывать:

public static void main(String[] args) < try < File fileDir = new File("c:\\temp\\test.txt"); Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(fileDir), "UTF8")); out.append("some UTF-8 text").append("\r\n"); out.flush(); out.close(); >catch (UnsupportedEncodingException e) < System.out.println(e.getMessage()); >catch (IOException e) < System.out.println(e.getMessage()); >catch (Exception e) < System.out.println(e.getMessage()); >> 

Отслеживать
ответ дан 13 янв 2016 в 13:55
Мстислав Павлов Мстислав Павлов
6,757 2 2 золотых знака 18 18 серебряных знаков 40 40 бронзовых знаков

package javaapplication2; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; public class JavaApplication2 < public static void main(String[] args) < ArrayListlist = new ArrayList<>(); list.add(13); list.add(44); try(FileOutputStream out = new FileOutputStream("file")) < int max = list.size(); if(max >0) < // size >0 out.flush(); //Чистка файла, если надо оставляем int i = 0; int a; while(i 0) < out.write(10); // /n //Выйдет цепочка //13 //44 //ВНИМАНИЕ! В КОНЦЕ ЛИШНЕГО /N НЕТ >a = list.get(i); out.write(Integer.toString(a).getBytes()); i = i + 1; > > > catch (FileNotFoundException ex) < Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex); >catch (IOException ex) < Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex); >//Чтение try(FileInputStream in = new FileInputStream("file")) < //Проще некуда, но на больших файлах это самый плохой вариант byte[] buff = new byte[in.available()]; in.read(buff); System.out.write(buff); System.out.print(".END. "); //В конце закрывающий .END. >catch (FileNotFoundException ex) < Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex); >catch (IOException ex) < Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex); >> > 
13 44.END. 

Отслеживать
ответ дан 4 апр 2017 в 21:53
Denis Kotlyarov Denis Kotlyarov
2,854 3 3 золотых знака 26 26 серебряных знаков 53 53 бронзовых знака

  • java
  • кодировка
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как записать число в файл java

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

Запись файлов. Класс FileWriter

Класс FileWriter является производным от класса Writer. Он используется для записи текстовых файлов.

Чтобы создать объект FileWriter, можно использовать один из следующих конструкторов:

FileWriter(File file) FileWriter(File file, boolean append) FileWriter(FileDescriptor fd) FileWriter(String fileName) FileWriter(String fileName, boolean append)

Так, в конструктор передается либо путь к файлу в виде строки, либо объект File, который ссылается на конкретный текстовый файл. Параметр append указывает, должны ли данные дозаписываться в конец файла (если параметр равен true), либо файл должен перезаписываться.

Запишем в файл какой-нибудь текст:

import java.io.*; public class Program < public static void main(String[] args) < try(FileWriter writer = new FileWriter("notes3.txt", false)) < // запись всей строки String text = "Hello Gold!"; writer.write(text); // запись по символам writer.append('\n'); writer.append('E'); writer.flush(); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >

В конструкторе использовался параметр append со значением false — то есть файл будет перезаписываться. Затем с помощью методов, определенных в базовом классе Writer производится запись данных.

Чтение файлов. Класс FileReader

Класс FileReader наследуется от абстрактного класса Reader и предоставляет функциональность для чтения текстовых файлов.

Для создания объекта FileReader мы можем использовать один из его конструкторов:

FileReader(String fileName) FileReader(File file) FileReader(FileDescriptor fd)

А используя методы, определенные в базом классе Reader, произвести чтение файла:

import java.io.*; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < // читаем посимвольно int c; while((c=reader.read())!=-1)< System.out.print((char)c); >> catch(IOException ex) < System.out.println(ex.getMessage()); >> >

Также мы можем считывать в промежуточный буфер из массива символов:

import java.io.*; import java.util.Arrays; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < char[] buf = new char[256]; int c; while((c = reader.read(buf))>0) < if(c < 256)< buf = Arrays.copyOf(buf, c); >System.out.print(buf); > > catch(IOException ex) < System.out.println(ex.getMessage()); >> >

В данном случае считываем последовательно символы из файла в массив из 256 символов, пока не дойдем до конца файла в этом случае метод read возвратит число -1.

Поскольку считанная порция файла может быть меньше 256 символов (например, в файле всего 73 символа), и если количество считанных данных меньше размера буфера (256), то выполняем копирование массива с помощью метода Arrays.copy. То есть фактически обрезаем массив buf, оставляя в нем только те символы, которые считаны из файла.

Запись в файл

Записать в файл 100 действительных случайных чисел в диапазоне [-100; 100] в 5 колонок с точностью 6 знаков после десятичной точки. Файла установить атрибут «Read-only». Считать с этого файла числа и вывести их в другой файл — сначала отрицательные, а затем положительные в 10 колонок с точностью 2 знака после десятичной точки. Новому файлу установить атрибут «Hidden».

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

Добавлено через 1 минуту

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import java.util.*; public class Pr1_4 { public static void main(String[] args) { int min = -100,max = 100; int diff = max - min; Scanner in = new Scanner(System.in); int[] array = new int[100]; for(int i = 0; i  100; i++) { array[i] = (int)(Math.random()*(200+1))-100; System.out.print((i+1) + " - " + array[i] + "\n"); } }

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Запись в файл — проверить, не идет ли в него запись, чтобы не генерировалось исключение
Доброе время суток! Вот такой пример: Imports System Imports System.IO Module Module1 .

Пожалуйста напишите программу, которая добавляет запись в типизированый файл тип — запись
Которая добавляет запись в типизированый файл тип — запись добавляет к той записи в файле.

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран.

Как разрешить запись в файл, по умолчанию запись не разрешена
Помогите! НАчинающий php — программист. Как разрешить запись в файл, по умолчанию запись не.

2479 / 1930 / 484
Регистрация: 17.02.2014
Сообщений: 9,206

ЦитатаСообщение от Shelleex1337 Посмотреть сообщение

Записать в файл 100 действительных случайных чисел в диапазоне [-100; 100] в 5 колонок с точностью 6 знаков после десятичной точки. Файла установить атрибут «Read-only»

нашлось в кодохранилище)) немного для тебя подправил.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
import java.io.File; import java.io.IOException; import java.util.Formatter; import java.util.concurrent.ThreadLocalRandom; public class Helper { public static void main(String[] args) { File storeDoubleFile = new File("output.txt"); try(Formatter doubleWriter = new Formatter(storeDoubleFile)) { for (int i = 0; i  20; i++) { doubleWriter.format("%.6f\t%.6f\t%.6f\t%.6f\t%.6f%n", ThreadLocalRandom.current().nextDouble(-99.,100.), ThreadLocalRandom.current().nextDouble(-99.,100.), ThreadLocalRandom.current().nextDouble(-99.,100.), ThreadLocalRandom.current().nextDouble(-99.,100.), ThreadLocalRandom.current().nextDouble(-99.,100.), ThreadLocalRandom.current().nextDouble(-99.,100.) ); } System.out.println(storeDoubleFile.canWrite()); storeDoubleFile.setReadOnly(); System.out.println(storeDoubleFile.canWrite()); } catch (IOException ex) {ex.printStackTrace();} } }

Регистрация: 25.12.2017
Сообщений: 424
Aviz__,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
package pr1_4; import java.util.Scanner; import java.util.*; import java.io.*; public class Pr1_4 { public static void main(String[] args) { int min = -100,max = 100; int diff = max - min; Scanner in = new Scanner(System.in); float[] array = new float[100]; Random r = new Random(); for(int i = 0; i  100; i++) { array[i] = r.nextFloat()*(max - min) + min; System.out.print((i+1) + " - " + array[i] + "\n"); } try(FileWriter writer = new FileWriter("5x20.txt",false)) { int b = 0; for(int i = 0; i  5; i++) { for(int j = b; j  20+b; j++) { writer.write(String.format(" %8.6f ", array[j])); } writer.write("\n"); b += 5; } File file = new File("5x20.txt"); file.setReadOnly(); writer.flush(); } catch (IOException ex) { System.out.println(ex.getMessage()); } try(FileWriter writer = new FileWriter("VidPDod.txt",false)) { for(int i = 0; i  100; i++) { if (array[i]  0) { writer.write(String.format(" %8.2f ", array[i])); } } writer.write("\n"); for(int i = 0; i  100; i++) { if (array[i] > 0) { writer.write(String.format(" %8.2f ", array[i])); } } File file = new File("VidPDod.txt"); file.isHidden(); writer.flush(); } catch (IOException ex) { System.out.println(ex.getMessage()); } } }

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

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Запись в текстовый файл (каждая запись — отдельная строка)
Добрый вечер) Программа берет данные таблицы Access и записывает их в строчку. Проблема заключается.

Запись чисел из файла 1, и запись в файл 2 в отсортированном виде
Задание: Есть файл 1, в нем находятся числа, нужно их отсортировать по возрастанию и записать в.

Запись строки в массив, сортировка, удаление и запись в файл
Нужна помощь. Из edit box к нам приходят строки мы их фильтруем. нужно строки записать в массив.

Запись в файл игнорируя запрет на запись
Доброго времени суток! кто может подсказать, возможно ли с помощью с# осуществить запись в файл.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *