Проблема с печатью содержимого из файла

Я записываю длину строки в файл, и в результате значение рассматривается как значение ASCII, а символ, указанный с помощью значения ASCII, записывается в файл, а затем я пытаюсь прочитать этот символ с помощью FileInputStream и BufferInputStream, и результат не будет отображаться на консоли. Почему символ из файла не выводится на консоль?

import java.io.*;
class Fileoutput{
    public static void main(String args[])
    {
        try
        {

         File f=new File("C:\\Users\\parsh\\YG2108\\Testfile.txt");
         FileInputStream fins=new FileInputStream("C:\\Users\\parsh\\YG2108\\Testfile.txt");
         FileOutputStream fouts=new FileOutputStream("C:\\Users\\parsh\\YG2108\\Testfile.txt");
         FileWriter bf=new FileWriter("C:\\Users\\parsh\\YG2108\\Testfile.txt");
         BufferedInputStream fin=new BufferedInputStream(fins);
         BufferedOutputStream fout=new BufferedOutputStream(fouts);
         BufferedWriter bw=new BufferedWriter(bf);
         int i;
         String s1 = "Good Afternoon have a nice day frghunv9uhbzsmk zvidzknmbnuf ofbdbmkxm;jccipx nc     xdibnbnokcm knui9xkbmkl bv";

         int length=s1.length();           //findin string length
         System.out.println(length);       //printing length on console
         fout.write(length);               //writting into the file
         System.out.println("Sucess");
         while((i=fin.read())!=-1)
         {    
             System.out.print((char)i);    
         }    
         bw.close();
         fout.close();
         fin.close();
         bf.close();
         fouts.close();
         fins.close();
         System.out.println("All done");
        }catch(Exception e){System.out.println(e);}     
    }
}

уже ответил @ stackoverflow.com/questions/52183123/…

Tarun 06.09.2018 12:43

Возможный дубликат Как вывести длину строки в файл

achAmháin 06.09.2018 12:45

@Tarun Во-первых, поймите проблему, о чем я пытаюсь сказать, это не та же проблема

Yogesh 06.09.2018 12:47

@Yogesh "Я записываю длину строки в файл, и в результате значение рассматривается как значение ASCII, а символ, указанный с помощью значения ASCII, записывается в файл" такая же, как и ваша предыдущая проблема

Tarun 06.09.2018 12:52

дубликат ... следует приостановить или удалить.

Rheatey Bash 14.05.2019 07:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
5
161
2

Ответы 2

Сначала посмотрите, заключается ли проблема в том, как вы пишете в файл
Следуйте по этой ссылке Как читать из файла в Java и смотрите также эту ссылку Как писать в файл на Java Проблема не в Asci, потому что, если длина строки int (как и должно быть) Вы должны проанализировать его, используя Integer.tostring (length_of_the_string), прежде чем записывать его в файл

вместо этой строки

fout.write(length);   

напишите эту строку

fout.write(Integer.toString(length)); 

Вы можете решить свою проблему в Google, прежде чем спрашивать в Stackoverflow (это может быть решено раньше в Stackoverflow)

Сэр, у меня нет проблем с длиной, рассматриваемой как значение ASCII, но проблема в том, что метод read () не работает для печати на консоли, и это не решается при поиске в Google

Yogesh 06.09.2018 13:10

@Yogesh Проверьте ответ сейчас

user9420246 06.09.2018 13:17

Сэр, посмотрите предыдущий комментарий, что я сказал о своей проблеме в программе

Yogesh 06.09.2018 13:19

Ваш код смешивает чтение с записью - у вас одновременно открываются и читающие, и пишущие объекты. Поскольку вы используете BufferedOutputStream, вывод не записывается непосредственно в файл (когда буфер не заполнен), и вы читаете файл до того, как он содержит какие-либо данные.

Чтобы решить эту проблему, очистите выходной поток fout.flush(); перед чтением или, в идеале, отделите чтение от записи:

import java.io.*;

class Fileoutput {

    public static void main(String args[]) throws IOException {
        File f = new File("test.txt");
        f.createNewFile();
        try (FileOutputStream fouts = new FileOutputStream(f); BufferedOutputStream fout = new BufferedOutputStream(fouts);) {
            String s1 = "Good Afternoon have a nice day frghunv9uhbzsmk zvidzknmbnuf ofbdbmkxm;jccipx nc     xdibnbnokcm knui9xkbmkl bv";

            int length = s1.length();
            System.out.println(length);
            fout.write(length);
            //fout.flush(); //optional, everything is flushed when fout is closed
            System.out.println("Sucess");
        }
        try (FileInputStream fins = new FileInputStream(f); BufferedInputStream fin = new BufferedInputStream(fins);) {
            int i;
            while ((i = fin.read()) != -1) {
                System.out.print((char) i);
            }
            System.out.println("All done");
        }
    }
}

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