我正在处理的 java 项目要求我编写与此 C 代码等效的 java:
void read_hex_char(char *filename, unsigned char *image)
{
int i;
FILE *ff;
short tmp_short;
ff = fopen(filename, "r");
for (i = 0; i < 100; i++)
{
fscanf(ff, "%hx", &tmp_short);
image[i] = tmp_short;
}
fclose(ff);
}
这段 Java 代码是我写的。
void read_hex_char(String filename, char[] image) throws IOException
{
Scanner s=new Scanner(new BufferedReader(new FileReader(filename)));
for(int i=0;i<100;i++)
{
image[i]=s.nextShort();
}
s.close();
}
这段代码是否正确?如果不是,应该进行哪些更正?
最佳答案
我会使用 FileInputStream 并逐字节读取(short 只是两个字节,char 比 short http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 更“复杂”)。我项目中的简单字节提取代码:
public static byte[] readFile(File file) throws IOException {
FileInputStream in = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int ch = -1;
while ((ch = in.read()) != -1)
bos.write(ch);
return bos.toByteArray();
}
对于您的示例,最简单的方法是找到一些示例:在其上运行 C 函数,然后运行 java 函数并比较结果。它应该为您提供信息。
关于java - 在 Java 中从文件中扫描字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9701206/