проблема с печатью содержимого из файла - PullRequest
0 голосов
/ 06 сентября 2018

Я записываю длину строки в файл, и в результате это значение рассматривается как значение 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);}     
    }
}

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Ваш код смешивает чтение и запись - у вас одновременно открываются и объекты чтения, и объекты записи.Поскольку вы используете 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");
        }
    }
}
0 голосов
/ 06 сентября 2018

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

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

fout.write(length);   

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

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

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

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