我尝试使用Java读取文件。该文件没有文件类型。当我使用UltraEdit文本编辑器打开它时,它看起来像这样:文件中的第一行是
00 00 10 01 00 51 21 E4 22 0D 6D F1 81 51 21 E2。
我还检查了UltraEdit中的文件编码格式,它是ANSI。但是如何在00 00 10中读取此文件...以这种方式在控制台上打印数据?
我在Java 1.7中有过日食。我试图在“ GBK”,“ GB2312”,“ UTF-8”中读取该文件,但是没有用。当我试图在“ ANSI”中读取它时,这是错误
错误消息
线程“ main”中的异常java.io.UnsupportedEncodingException:ANSI。
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class Deconde{
public static void main (String []args) throws Exception{
//File byte stream
FileInputStream fis=new FileInputStream("D:\\0testData\\Data_21");
//A bridge of byte streams and character streams that can specify a specified character format
InputStreamReader isr=new InputStreamReader(fis,"ANSI");
String str=null;
int c=0;
while((c=isr.read())!=-1)
System.out.print((char)c);
System.out.println("_______________________________________________");
//Read characters directly, as long as the encoding problem is ok
BufferedReader br=new BufferedReader(isr);
str=br.readLine();
while(str!=null)
{
System.out.println(str);
str=br.readLine();
}
System.out.println("______________________________________________________");
//Use the default encoding of the InputStreamReader, no problem when it is ANSI
BufferedReader br2=new BufferedReader(new InputStreamReader(fis));
str=br2.readLine();
while(str!=null)
{
System.out.println(str);
str=br2.readLine();
}
}
}
```
答案 0 :(得分:0)
我确实在上面问了一个问题,但是我假设您要执行HexDump,请考虑以下程序:
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
public class HexDump {
public static void main(String[] args) {
try {
InputStream isr = new DataInputStream(new FileInputStream("C:\\Temp\\some_file.dat"));
int bytesPerLine = 16;
int byteCount = 0;
int data;
while ((data = isr.read()) != -1) {
if (byteCount == 0)
System.out.println();
else if (byteCount % bytesPerLine == 0)
System.out.printf("\n", byteCount);
else
System.out.print(" ");
System.out.printf("%02x", data & 0xff);
byteCount += 1;
}
System.out.println();
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
}
它将获取示例文件并将单个字节转储为十六进制值(每行16个字节)。
正如Stephen所提到的,对于二进制文件,实际上并没有任何形式的编码方案(您建议的类型-例如ANSI等)。这种类型的编码方案适用于文本文件,并告诉您它是ANSI还是UTF-8或UNICODE等,并告诉您如何阅读它。 话虽如此,二进制文件确实暗含了“编码方案”。就二进制文件而言,正如Stephen所提到的,“编码方案”是由写文件的人确定的。实际上对于文本文件也是如此,该程序将确定它是以ANSI,UTF-8还是任何编码方式编写文本文件。 对于二进制文件,“编码方案”可能是JPEG,PNG,GIF,MP3或MP4,ZIP或TAR或成千上万种其他可能性中的任何一种。同样,这取决于编写文件的程序(例如,图像编辑器,音频文件编辑器等)。
我希望这可以帮助您找到答案。