Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中正确读取二进制文件中的数据_Java_File_Encryption_Netbeans_Binary - Fatal编程技术网

在Java中正确读取二进制文件中的数据

在Java中正确读取二进制文件中的数据,java,file,encryption,netbeans,binary,Java,File,Encryption,Netbeans,Binary,我在读取理解的数据时遇到问题,当我使用解析字符时,数字在ASCII中变成了奇怪的字符,下面是代码: static void doTestByteFiles() throws IOException { File file = new File("sample1.data"); FileOutputStream outStream = new FileOutputStream(file); //Warning!!!! byte[] outByteArray = {10,20,

我在读取理解的数据时遇到问题,当我使用解析字符时,数字在ASCII中变成了奇怪的字符,下面是代码:

static void doTestByteFiles() throws IOException {

   File file = new File("sample1.data");
   FileOutputStream outStream = new FileOutputStream(file); //Warning!!!!

   byte[] outByteArray = {10,20,30,40,50,60,70,80,(byte)'J',(byte)'a',(byte)'v',(byte)'a'};


   outStream.write(outByteArray);
   outStream.close();

   FileInputStream inStream = new  FileInputStream(file);

   int fileSize = (int) file.length();
   byte[] inByteArray = new byte[fileSize];
   inStream.read(inByteArray);

   for (int i = 0; i < fileSize; i++) {
     System.out.println((char) inByteArray[i]);
   }

inStream.close();
 }
结果是:

2. < F P J A. v a

我期望的结果是: 10 20 30 40 50 60 70 80 J A. v a


我试着用byte代替char,同样的问题,但是Java单词变成了ASCII中的数字,有什么帮助吗?

byte[]数组中的数字被解释为字节值。您必须在数组中写入整数并将其转换为字节。

您的期望是有缺陷的。您应该查找ascii表。您正在混合字符和字节。。。退一步,准确地描述你想要做什么。你在一个实际的ASCII表中查找过这些值吗?伙计们,我正试图用byteArray来存储数据,然后从ASCII表中读取数据,比如说“a”字母等于97的整数,所以我试着在数组中放97而不是“a”,但又有一个错误。谢谢这是我说的;您正在混合字符和字节。Java不使用ASCII,而是使用Unicode