当前位置: 代码迷 >> J2SE >> 输入输出流的有关问题,求大神帮忙
  详细解决方案

输入输出流的有关问题,求大神帮忙

热度:39   发布时间:2016-04-23 19:55:45.0
输入输出流的问题,求大神帮忙
向磁盘中写入各种数据后,

输入整数
55
输入浮点数
15.2
输入布尔量
true



在记事本中查看时为什么查看时会是这种情况

  显示7As33,而不是我输入的数据
------解决思路----------------------
按照字符流输入字符串你就能看到了。
------解决思路----------------------
把你写入磁盘文件的代码贴出来看看
比如这样就可以
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class FileStreamTest {


public static void main(String args[]) throws UnsupportedEncodingExceptionIOException{
String content="输入整数\n55\n输入浮点数\n15.2\n输入布尔量\ntrue";
String path="d:"+File.separator+"test.txt";
writeToTxt(content,path);
}

public static void writeToTxt(String content,String path) throws UnsupportedEncodingException, IOException{
FileOutputStream fos = new FileOutputStream(path);
fos.write(content.getBytes("UTF-8"));
fos.flush();
fos.close();
}
}

------解决思路----------------------
用PrintStream处理字符很方便

public class Demo{
    public static void main(String[] args) throws FileNotFoundException {
        PrintStream ps = new PrintStream("d:/test.log");
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("请输入: ");
            String a = scanner.nextLine();
            if ("quit".equalsIgnoreCase(a)){
                System.out.println("退出");
                break;
            }
            ps.println(a);
        }
    }
}

------解决思路----------------------
你在4楼贴的源码使用了

dout.writeInt(i);   // Writes an int to the underlying output stream as four bytes 按照4个字节流方式写入
dout.writeFloat(f);
dout.writeBoolean(b);


这些操作不是按照字符写入的,你用字符的方式查看(比如打开notepad++),当然和你的输入不同了


写入和看到的要一样,那就改为 3楼 按照字符方式写入
------解决思路----------------------
如果你要按照啊字节流方式写入,那么读取的时候也要按照字节流方式读取,也可以还原成你以前输入的信息。
DataInputStream 有对应的 readInt(), readFloat() , readBoolean()
  相关解决方案