我的问题是这样的,在我的C盘有一个messages.dat文件,它是程控交换机返回的信息,这先不管。
我现在想用JAVA来读取这些信息,总是乱码,
我的方法是这样的import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class TestFile {
public static void main(String[] args) throws IOException
 {
           FileInputStream fis = new FileInputStream("c:/messages.dat");
  //InputStream is = new InputStream();
  DataInputStream dis =  new DataInputStream(fis);
  String s="d";
  byte []b=new byte[1024];
  int i=0;
  i=dis.read(b);
  String ss=new String(b,"UTF-8");//输出还是乱码。
  //s=dis.readUTF(dis);
  System.out.println("s="+ss+"len="+b.length+"i"+i);  
  fis.close();
  dis.close();
  
 } 
}
///////请高手指点,谢谢

解决方案 »

  1.   

    public class abcd {
            public static void main(String[] args) throws IOException
             {
               FileInputStream fis = new FileInputStream("c:\\messages.dat");
              //InputStream is = new InputStream();
              DataInputStream dis =  new DataInputStream(fis);
              String s="d";
              byte []b=new byte[dis.available()];
              int i=0;
              i=dis.read(b);
              String ss=new String(b,"UTF-8");
              //s=dis.readUTF(dis);
              System.out.println("s="+ss+"len="+b.length+"i"+i);  
              fis.close();
              dis.close();         } 
    }
    我们已经测试 数组需要数据的长度
      

  2.   

    4楼,给我也发一份吧! 谢谢!我现在也遇到了字节流的问题,谢谢了 [email protected]  或者QQ  759562402  谢谢!
      

  3.   

    用记事本打开是乱码,你怎么读都是乱码
    如果是二进制,就要按照你们那设备的协议来读二进制,
    解析byte而已,何必转成String呢
      

  4.   

    只是读取文件里的东西吗?要输入的话,要看编码的 try  
            {   
                FileInputStream stream=new FileInputStream("c:/test.dat");   
                InputStreamReader is = new InputStreamReader(stream,"GB2312");
                String str1 = "";
                String str2 = "";
                //循环读每一个字符,并连接在一个字符串str1上
                int i =-1;
                while ((i = is.read()) != -1)
                 {
                  char m = (char)i;
                  str2=str2.valueOf(m);     
                  str1 = str1+str2;
                 } 
                System.out.println(str1);
            } catch (Exception e)   
            {   
                e.printStackTrace();   
            }  
      

  5.   

    只是读取文件里的东西吗?要输入的话,要看编码的 try  
            {   
                FileInputStream stream=new FileInputStream("c:/test.dat");   
                InputStreamReader is = new InputStreamReader(stream,"GB2312");
                String str1 = "";
                String str2 = "";
                //循环读每一个字符,并连接在一个字符串str1上
                int i =-1;
                while ((i = is.read()) != -1)
                 {
                  char m = (char)i;
                  str2=str2.valueOf(m);     
                  str1 = str1+str2;
                 } 
                System.out.println(str1);
            } catch (Exception e)   
            {   
                e.printStackTrace();   
            }  
      

  6.   

    只是读取文件里的东西吗?要输入的话,要看编码的     public void read()   
        {   
            try  
            {   
                FileInputStream stream=new FileInputStream("c:/test.dat");   
                InputStreamReader is = new InputStreamReader(stream,"GB2312");
                String str1 = "";
                String str2 = "";
                //循环读每一个字符,并连接在一个字符串str1上
                int i =-1;
                while ((i = is.read()) != -1)
                 {
                  char m = (char)i;
                  str2=str2.valueOf(m);     
                  str1 = str1+str2;
                 } 
                System.out.println(str1);
            } catch (Exception e)   
            {   
                e.printStackTrace();   
            }   
        }