永发信息网

java FileOutputStream 的问题

答案:4  悬赏:30  手机版
解决时间 2021-04-28 19:51
  • 提问者网友:人傍凄凉立暮秋
  • 2021-04-28 03:12

import java.io.*;
public class y{
public static void main(String args[]) {
byte a[]={97,98,99,100,101};

try{FileOutputStream f=new FileOutputStream("c:/u.txt");
f.write(a);
}catch(IOException e){System.out.println("错误");}
}}

文件执行完后,当我打开u。txt文件后,看到的确是“abcde”,这五个字符。如何修改才能将“97,98,99,100,101”这五个数字输出?

我的目的是想让u。txt文件中显示这五个数字。

最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-04-28 03:28

为什么不显示这个数字呢?因为TXT文件把文件内容转换成Unicode码来输出给显示器的。你输入的这几个码值97,98,99,100,101就代表了abcde字符,而你想显示的字符97,98,99,100,101所对应的码值是97 - 5755 98 - 5756 99-5757等等。你只有向文件写入这些数字才可以显示对应的字符。一楼很聪明活用了FileWriter的write方法,注意他在这里f.write(a[i] + "");加了一个空字符"",这使得f调用的不再是write(byte)方法,而是write(String)方法,jvm自动把整个参数解析为字符串"97",然后写入文件,但是请你记住,无论使用何种方法,它都是将97转换成字符'9''7'的Unicode码来写入文件的。


如果楼主一定要用FileOutputStream的话(这个类没有write(String)方法,它是面向字节的,而FileWrite是面向字符的),那我建议你这样来定义a数组,byte a[]={'9','7','9','8','9','9','1','0','0','1','0','1'};

全部回答
  • 1楼网友:三千妖杀
  • 2021-04-28 06:32
FileOutputStream是字节流。它把你数组里面的已经当成二进制的ASCII码了。所以输出abcde你要原样输出就用PrintStream过滤下。像楼上说的那样就可以了
  • 2楼网友:猎心人
  • 2021-04-28 05:43

import java.io.*; public class y{ public static void main(String args[]) { byte a[]={97,98,99,100,101}; try{FileWriter f=new FileWriter("c:/u.txt"); for (int i = 0; i < a.length; i++)

f.write(a[i] + "");

f.flush();

f.close(); }catch(IOException e){System.out.println("错误");} }}

  • 3楼网友:山河有幸埋战骨
  • 2021-04-28 04:32

怎么不封装一层,PrintStream,像这样:

import java.io.*;

public class y { public static void main(String args[]) { byte a[] = { 97, 98, 99, 100, 101 };

try { FileOutputStream f = new FileOutputStream("c:/u.txt"); PrintStream p = new PrintStream(f); p.println(97); } catch (IOException e) { System.out.println("错误"); } } }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯