Я записываю длину строки в файл, и в результате значение рассматривается как значение 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);}
}
}
Возможный дубликат Как вывести длину строки в файл
@Tarun Во-первых, поймите проблему, о чем я пытаюсь сказать, это не та же проблема
@Yogesh "Я записываю длину строки в файл, и в результате значение рассматривается как значение ASCII, а символ, указанный с помощью значения ASCII, записывается в файл" такая же, как и ваша предыдущая проблема
дубликат ... следует приостановить или удалить.




Сначала посмотрите, заключается ли проблема в том, как вы пишете в файл
Следуйте по этой ссылке Как читать из файла в 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 Проверьте ответ сейчас
Сэр, посмотрите предыдущий комментарий, что я сказал о своей проблеме в программе
Ваш код смешивает чтение с записью - у вас одновременно открываются и читающие, и пишущие объекты. Поскольку вы используете 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");
}
}
}
уже ответил @ stackoverflow.com/questions/52183123/…