Почему .write не добавляет целые числа в файл? Джава

У меня возник вопрос по библиотеке File.io. Так в классе у меня было задание Назначение класса

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

import java.io.*;
import java.util.Scanner;

public class JH1_00668860 {
    public static void printToScreen(String filename) {
        Scanner scan = null;
        try {
            FileInputStream fis = new FileInputStream(filename);
            scan = new Scanner(fis);
            while (scan.hasNextLine()) {
                System.out.println(scan.nextLine());
            }
        } catch (FileNotFoundException e) {
            System.out.println("printToScreen: can't open: " + filename);
        } finally {
            if (scan != null)
                scan.close();
        }
    }// end of prin

    public static void process(String inputFilename) {
        String fileoutputname = null;
        FileInputStream file = null;
        Scanner scan = null;
        FileOutputStream outputFilename = null;
        OutputStream ps = null;
        try {
            file = new FileInputStream(inputFilename);
            scan = new Scanner(file);
            fileoutputname = scan.next();
            System.out.println(fileoutputname + "asfasdfasdfasdf");





            outputFilename = new FileOutputStream(fileoutputname);
            ps = new FileOutputStream(fileoutputname);
            if (scan.hasNextInt() && scan.nextInt() >= 0) {
                System.out.println(scan.nextInt() + "asfs");
                ps.write(scan.nextInt());





            } else {
                System.out.println("You have ran out of data or you have a bad value");
            }

            System.out.println("A file was created");
        } catch (FileNotFoundException e) {
            System.out.println("You ran into an exception :" + e);
        } catch(IOException e) {
            System.out.println("You ran into an exception :" + e);

        } finally {
            try {
                if (file != null) {
                    file.close();

                }
                if (outputFilename != null) {
                    outputFilename.close();

                }
                if (ps != null) {
                    ps.close();

                }
//              FileInputStream st = new FileInputStream(fileoutputname);
//              int contents = st.read();
//              while (scan.hasNextInt()) {
//                  System.out.print(contents);
//              }
                if (scan != null) {
                    scan.close();
                }
                printToScreen(fileoutputname);

            } catch (IOException e) {
                System.out.println("there was an exception");
            }

        }

    }

    public static void main(String args[]) {
        process("file2.txt");

    }
}

Когда я запускаю его, консоль показывает Этот Затем я перехожу к файлу на моем компьютере с именем niceJob.txt, который запускается как пустой файл, затем Eclipse сообщает, что он будет изменен, но затем, когда я «перезагружаю», ничего не появляется.

Может ли кто-нибудь помочь мне отладить эту ошибку (или если это происходит что-то еще?) Любая помощь будет принята с благодарностью. Спасибо

Что ж, одна проблема, которую я сразу вижу, заключается в том, что вы вызываете .nextInt() три раза и только один раз записываете в файл, поэтому вы отбрасываете два из этих считываний.

markspace 09.09.2018 03:01
«Может ли кто-нибудь помочь мне отладить эту ошибку?» - Вы пробовали использовать отладчик вашей IDE?
Stephen C 09.09.2018 03:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
61
1

Ответы 1

После вашего кода ps.write(scan.nextInt()); попробуйте поставить ps.write.flush(); или ps.flush();

Обновлено: Если по-прежнему не работает, добавьте импорт:

import java.io.BufferedWriter;
import java.io.FileWriter;

и замените ps.write(scan.nextInt()); на

BufferedWriter writer = new BufferedWriter(new FileWriter(inputFilename)); 
writer.write(Integer.toString(scan.nextInt));  
writer.newLine();
writer.flush();

Я попытался сбросить и записать, но данные не попадают в файл

Ian Zhang 09.09.2018 15:38

Я имею в виду, что они должны быть оба ps.write (scan.nextInt ()); + ps.write.flush (); в следующей строке или ps.write (scan.nextInt ()); + ps.flush ();

Mariusz 10.09.2018 03:24

Другие вопросы по теме