java - 在 Java 中从文件中扫描字符

标签 java c file-io java.util.scanner

我正在处理的 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/

相关文章:

c - 带文件IO的链表

java - 如何在 Tomcat 中读取我的 webapp 上下文之外的属性文件

java - 如何按类别查找书籍?

连接空终止符会导致段错误

c - 从字符串中读取 float 作为 2 个整数

java - 如何获取jar文件内的文件夹路径?

c - 读取字符 0x1A 时发生文件结尾

java - 如何向我的框架添加滚动 Pane

java - Java 中的 Speex 编码

c++ - 从C使用C++对象