Java BufferedWriter可以';不要写某些字符
我决定测试我能写多少不同的字符。我尝试了以下代码:Java BufferedWriter可以';不要写某些字符,java,bufferedwriter,Java,Bufferedwriter,我决定测试我能写多少不同的字符。我尝试了以下代码: for (int i = 0;i < 255;i++) { myBufferedWriter.write(i); } 我认为你的问题在于你使用了错误的API。当前代码的情况是,您的“字符”被视为文本,并使用平台的默认字符编码进行编码 如果您希望以二进制形式写入数据(例如,从零到255的字节),则应使用OutputStreamAPI。特别是缓冲输出流 例如: public class Main { public stati
for (int i = 0;i < 255;i++) {
myBufferedWriter.write(i);
}
我认为你的问题在于你使用了错误的API。当前代码的情况是,您的“字符”被视为文本,并使用平台的默认字符编码进行编码 如果您希望以二进制形式写入数据(例如,从零到255的字节),则应使用
OutputStream
API。特别是缓冲输出流
例如:
public class Main {
public static void main(String[] args) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File("abc.dat")));
for (int i = 0; i < 255; i++) {
bos.write(i);
}
bos.close();
}
}
公共类主{
公共静态void main(字符串[]args)引发IOException{
BufferedOutputStream bos=新的BufferedOutputStream(
新文件输出流(新文件(“abc.dat”));
对于(int i=0;i<255;i++){
bos.write(i);
}
bos.close();
}
}
如果您也希望能够编写其他数据类型(以二进制形式),那么
DataOutputStream
更合适。。。因为它有很多其他的方法来编写基元类型等等。但是,如果您想高效地编写,需要在FileOutputStream
和DataOutputStream
之间设置一个bufferedoutstream
,我已经解决了这个问题。我的新代码:
public class Main {
public static void main(String[] args) {
try{
DataOutputStream dos = new DataOutputStream(new FileOutputStream(new File("abc.txt")));
for (int i = 0;i < 255;i++)
dos.writeByte(i);
dos.close();
}catch(Exception e){}
}
}
公共类主{
公共静态void main(字符串[]args){
试一试{
DataOutputStream dos=新的DataOutputStream(新文件outputstream(新文件(“abc.txt”));
对于(int i=0;i<255;i++)
dos.writeByte(i);
dos.close();
}捕获(例外e){}
}
}
如何使用输出流写入文件?@SusanYandersOutputStream.write()
+对于这个答案,@jlordo它在任何编辑器中都会这样做。我试过另外两个。如果它显示了错误的东西,那么它就不会是一个十六进制编辑器。我看得不够近。我有和你一样的输出。我会做一些调查,然后发布一个答案。@jlordo是的。一大堆问号。:)没有必要把答案放在这个问题上。。。尤其是因为这不一定是最好的答案。我把它删掉了。。这段代码有两个问题:1)您没有进行任何缓冲,因此写入的每个字节都将执行一个系统调用。2) 你把所有的例外都压扁了,这是个坏主意。@StephenC我知道。现在这并不重要。在C++中,几乎不可能使用异常,如果没有任何可能引发异常的错误,那么只会不重要。如果存在bug,那么您的代码将自动删除任何证据。我不认为这是不重要的。。。除非你是少数真正喜欢追踪不明虫子的人之一。
public class Main {
public static void main(String[] args) {
try{
DataOutputStream dos = new DataOutputStream(new FileOutputStream(new File("abc.txt")));
for (int i = 0;i < 255;i++)
dos.writeByte(i);
dos.close();
}catch(Exception e){}
}
}