- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在学习java的基本I/O。请看下面的代码:
import java.io.DataOutputStream;
import java.io.IOException;
public class TestIO {
public static void main(String[] args) {
try(DataOutputStream out=new
DataOutputStream(new FileOutputStream("e:\\ccc.txt"))){
out.writeShort(67);
out.writeChar(67);
}catch(IOException ex){
ex.printStackTrace();
}
}
}
在输出 ccc.txt 文件中,我得到以下输出:
C C
据我了解,这两种方法都会将两个字节写入输出流,并且二进制字符串 67 是 1000011,它代表 ASCII 或任何其他代码中的大写字母 C。 C 之前的空格是方法读取的字节 0000 0000。
但是,如果这两种方法都只是将两个字节写入输出流,那么它们之间有什么区别?我期望 writeShort 可以将两个字节写入输出流,然后将其传输回整数。换句话说,如何直接将整数67写入文件,而不将其转换为字符?
<小时/>换个角度问这个问题,在什么情况下这两种方法会产生不同的结果?我需要一个现实世界的例子。谢谢!
最佳答案
However, what is the difference between the two methods if they both simply write two bytes to the outputstream?
这听起来很老套,但是:一个需要一个 char
,另一个需要一个 short
。这些类型不能相互转换,并且您可以在不同的时间使用它们。尽管 char
只是一个 16 位无符号整数,但其预期用途是用于 UTF-16 代码单元;你不会(或者至少不应该)使用它来存储你认为为数字的值......而short
则相反。
因此,如果您想要写入char
,请使用writeChar
。如果您有short
,请使用writeShort
。在这两种情况下,您都希望使用相应的方法进行阅读。
关于java - java.io.DataOutputStream 类中的 writeChar 和 writeShort 方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757707/
writeUTF 和 writeChars 有什么区别? (ObjectOutputStream 的方法)另外我在ObjectInputStream中也没有找到对应的readChars。 最佳答案 w
我已经在 hdfs 中写入了一些数据,但我希望其中没有 writeUTF() 方法写入的前两个字节。我想将这个前两个字节的免费 hdfs 文件复制到本地文件并对其进行一些分析。 if (fs.exis
我正在为一个类项目编写一些编码/解码例程,我对 Java 在这种情况下的默认行为有点困惑。这是我的“天真”子程序,用于在字节流中写入和读取字符串: protected static void writ
我目前正在学习java的基本I/O。请看下面的代码: import java.io.DataOutputStream; import java.io.IOException; public class
我是一名优秀的程序员,十分优秀!