FileOutputStream 写得比应有的少
FileOutputStream writing less than it should
我正在尝试编写一个程序,将 sinwave 的数据保存到 .txt 文件中,但是当我执行该程序时,它写入的内容比应有的少(有时甚至什么都不写)。这是代码:
public static void main(String[] args) {
GeneradorSeñal gs = new GeneradorSeñalSinusoidal("sgsg");
Double salida;
try{
FileOutputStream out = new FileOutputStream("out.txt");
OutputStreamWriter muestras = new OutputStreamWriter(out);
for(int i=0; i<500; i++){
salida=gs.getSalida();
muestras.write(String.valueOf(salida)+"\n");
System.out.println(i+"\t"+salida);
}
}catch(Exception e){
e.getStackTrace();
}
}
GeneradorSeñal 和 GeneradorSeñalSinusoidal 是创建正弦曲线的 classes。
gs.getSalida() returns正弦值,正弦值class效果很好,不是问题。
确保始终调用输出流的close()
方法。这确保所有缓冲数据都写入流。
此外,如果您要写字符,使用 FileWriter
更方便。
我改进了你的代码:
... ...
try{
FileOutputStream out = new FileOutputStream("out.txt");
OutputStreamWriter muestras = new OutputStreamWriter(out);
for(int i=0; i<500; i++){
salida=gs.getSalida();
muestras.write(String.valueOf(salida)+"\n");
System.out.println(i+"\t"+salida);
}
muestras.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(out!=null){
try{out.close();}
catch(Throwable e){
e.printStackTrace();
}
}
}
使用 finally 确保输出流是 100% closed.And 使用 "out!=null" 以防 out 未初始化。如果 out 已打开但 "muestras" 未打开,则关闭 'out' 而不是关闭 "muestras"。
试试这个..
try{
for(int i=0; i<500; i++){
salida=gs.getSalida();
muestras.write(String.valueOf(salida)+"\n");
muestras.flush();
System.out.println(i+"\t"+salida);
}
}catch(IOException ioe){
ioe.printStackTrace();
}finally{
try{
muestras.close();
}finally{}
}
我正在尝试编写一个程序,将 sinwave 的数据保存到 .txt 文件中,但是当我执行该程序时,它写入的内容比应有的少(有时甚至什么都不写)。这是代码:
public static void main(String[] args) {
GeneradorSeñal gs = new GeneradorSeñalSinusoidal("sgsg");
Double salida;
try{
FileOutputStream out = new FileOutputStream("out.txt");
OutputStreamWriter muestras = new OutputStreamWriter(out);
for(int i=0; i<500; i++){
salida=gs.getSalida();
muestras.write(String.valueOf(salida)+"\n");
System.out.println(i+"\t"+salida);
}
}catch(Exception e){
e.getStackTrace();
}
}
GeneradorSeñal 和 GeneradorSeñalSinusoidal 是创建正弦曲线的 classes。 gs.getSalida() returns正弦值,正弦值class效果很好,不是问题。
确保始终调用输出流的close()
方法。这确保所有缓冲数据都写入流。
此外,如果您要写字符,使用 FileWriter
更方便。
我改进了你的代码:
... ...
try{
FileOutputStream out = new FileOutputStream("out.txt");
OutputStreamWriter muestras = new OutputStreamWriter(out);
for(int i=0; i<500; i++){
salida=gs.getSalida();
muestras.write(String.valueOf(salida)+"\n");
System.out.println(i+"\t"+salida);
}
muestras.flush();
}catch(Exception e){
e.printStackTrace();
}finally{
if(out!=null){
try{out.close();}
catch(Throwable e){
e.printStackTrace();
}
}
}
使用 finally 确保输出流是 100% closed.And 使用 "out!=null" 以防 out 未初始化。如果 out 已打开但 "muestras" 未打开,则关闭 'out' 而不是关闭 "muestras"。
试试这个..
try{
for(int i=0; i<500; i++){
salida=gs.getSalida();
muestras.write(String.valueOf(salida)+"\n");
muestras.flush();
System.out.println(i+"\t"+salida);
}
}catch(IOException ioe){
ioe.printStackTrace();
}finally{
try{
muestras.close();
}finally{}
}