Java将整数输出到文件

Java将整数输出到文件,java,file-io,Java,File Io,我试图输出一个整数数组到一个文件,但遇到了一个障碍。代码执行正确,没有抛出错误,但它没有给我一个包含数字1-30的文件,而是给了我一个填充了[]的文件,我已将问题隔离到包含的代码段 try { BufferedWriter bw = new BufferedWriter(new FileWriter(filepath)); int test=0; int count=0; while(count<temps.lengt

我试图输出一个整数数组到一个文件,但遇到了一个障碍。代码执行正确,没有抛出错误,但它没有给我一个包含数字1-30的文件,而是给了我一个填充了[]的文件,我已将问题隔离到包含的代码段

try
       {
       BufferedWriter bw = new BufferedWriter(new FileWriter(filepath));
       int test=0;
       int count=0;
        while(count<temps.length)
        {
          test=temps[count];  
          bw.write(test);
          bw.newLine();
          bw.flush();
          count++;
        }
       }
       catch(IOException e)
       {
           System.out.println("IOException: "+e);
       }
试试看
{
BufferedWriter bw=新的BufferedWriter(新文件写入程序(文件路径));
int检验=0;
整数计数=0;

而(count您可以将整数数组转换为字节数组,并执行以下操作:

public void saveBytes(byte[] bytes) throws FileNotFoundException, IOException {
 try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(filepath))) {
   out.write(bytes);
 }
}

您可以将整数数组转换为字节数组,并执行以下操作:

public void saveBytes(byte[] bytes) throws FileNotFoundException, IOException {
 try (BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(filepath))) {
   out.write(bytes);
 }
}

您将数字作为整数写入文件,但希望它是字符串。
bw.write(test);
更改为
bw.write(Integer.toString(test));

将数字作为整数写入文件,但希望它是字符串。 将
bw.write(test);
更改为
bw.write(Integer.toString(test));
写入int的字符值,而不是int值。因此,输出65应该将字母
A
放入文件,66将打印B…等等。您需要将
字符串
值而不是int值写入流

改用

写入int的字符值,而不是int值。因此,输出65应将字母
A
放入文件,66将打印B…等。您需要将
字符串
值而不是int值写入流

改用


您遇到的问题是您正在使用该方法。让您困惑的是,虽然该方法签名表示它正在写入
int
,但实际上它希望int表示编码字符。换句话说,写入
0
就是写入
NUL
,而写入
65
将输出e> “A”

从javadoc:

写入单个字符。要写入的字符包含在给定整数值的16个低阶位中;忽略16个高阶位

纠正问题的一个简单方法是在写入之前将数字转换为字符串。实现这一点的方法有很多,包括:

int test = 42;
bw.write(test+"");

您遇到的问题是您正在使用该方法。让您困惑的是,虽然该方法签名表示它正在写入
int
,但实际上它希望int表示编码字符。换句话说,写入
0
就是写入
NUL
,而写入
65
将输出e> “A”

从javadoc:

写入单个字符。要写入的字符包含在给定整数值的16个低阶位中;忽略16个高阶位

纠正问题的一个简单方法是在写入之前将数字转换为字符串。实现这一点的方法有很多,包括:

int test = 42;
bw.write(test+"");
我建议使用或替代:

PrintStream ps=new PrintStream(filePath,true);//对于自动刷新,为true
int检验=0;
整数计数=0;
while(计数<临时长度)
{
测试=临时[计数];
ps.println(测试);
计数++;
}
ps.close();
我建议使用或替代:

PrintStream ps=new PrintStream(filePath,true);//对于自动刷新,为true
int检验=0;
整数计数=0;
while(计数<临时长度)
{
测试=临时[计数];
ps.println(测试);
计数++;
}
ps.close();

您能确认您想要一个包含人类可读数据的“文本”文件而不是二进制文件吗?输出文件应该是人类可读的“文本”文件您能确认您想要一个包含人类可读数据的“文本”文件而不是二进制文件吗?输出文件应该是人类可读的“文本”文件
PrintStream ps = new PrintStream(filePath, true); // true for auto-flush
int test = 0;
int count = 0;
while(count < temps.length)
{
    test = temps[count];  
    ps.println(test);
    count++;
}
ps.close();