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