我的问题是这样的,在我的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();
}
}
///////请高手指点,谢谢
我现在想用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();
}
}
///////请高手指点,谢谢
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(); }
}
我们已经测试 数组需要数据的长度
如果是二进制,就要按照你们那设备的协议来读二进制,
解析byte而已,何必转成String呢
{
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();
}
{
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();
}
{
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();
}
}