Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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 为什么我的输出不是字节码?使用FileOutputStream和.getBytes方法时_Java - Fatal编程技术网

Java 为什么我的输出不是字节码?使用FileOutputStream和.getBytes方法时

Java 为什么我的输出不是字节码?使用FileOutputStream和.getBytes方法时,java,Java,这是我正在使用的代码,当我运行它并打开输出文件时,我看到Hello world已保存 为什么是这样 public class Fileoutputstream { public static void main(String [] args) throws IOException { File file = null; FileOutputStream fileOut = null; try { file = n

这是我正在使用的代码,当我运行它并打开输出文件时,我看到Hello world已保存

为什么是这样

public class Fileoutputstream {
    public static void main(String [] args) throws IOException {
        File file = null;
        FileOutputStream fileOut = null;

        try {

            file = new File("output");
            if (!file.exists()) {                                 
               file.createNewFile();
            }                                   

            fileOut = new FileOutputStream(file, true);

            String textToSave = "Hello World";
            byte[] textToSaveBytes = textToSave.getBytes();
            fileOut.write(textToSaveBytes);

            fileOut.close();
       } catch (Exception e) {

      }
   }
}

写入文件的字节实际上是ASCII码字符串,因此毫无疑问,输出文件是文本文件。
如果文件中没有非文本字符,即空字节、控制字符等,大多数程序都会将文件视为“文本”

您想问什么?您似乎对字节是什么以及文件存储的工作原理有根本性的误解。所有类型的所有文件都是字节序列;这取决于一个应用程序,比如一个文本编辑器,来决定如何解释这些字节。我正在学习字节流和字符流,我想如果我运行一个位于字节流下的fileoutputstream,结果将是一种机器代码,所以你想在机器代码中看到Hello,如果我没有弄错的话?编辑您的问题以显示预期的输出。为什么我的输出不是字节码?如果输出是字节码,您希望看到什么?字节码对您意味着什么?所以getBytes返回ASCII码,谢谢您,如果您调用getBytes的字符串包含ASCII字符,那么是的,它返回的是以字节为单位的ASCII码。如果字符串包含UTF字符,它将返回这些字符的字节。因此getBytes返回ASCII代码-否,它将获取源字符串中的UTF-16值,并将其编码到平台的默认字符集中,在美国可能是ISO-8859-1,这是ASCII的超集。目标字符集中不存在的任何UTF-16字符都会被更改为默认替换字符。我所说的ASCII有点误导。正如上面的评论所说,您的默认系统字符集很可能是UTF-8或其他一些ASCII兼容的字符集,如果传递给getBytes的字符串(没有参数)只包含ASCII代码,那么您得到的字节数与字符串的字符数相等。