如何检查文件中的数据类型

Posted

技术标签:

【中文标题】如何检查文件中的数据类型【英文标题】:How do you check what type of data is in a file 【发布时间】:2014-11-24 08:03:48 【问题描述】:

我正在将类型为intchardoublebyteboolean 的数据写入文件和文件。

我有将数据写入文件的方法。

对于读取方法,我将文件内容放入ArrayList,然后将它们传输到普通数组中。但是为了做到这一点,我必须知道文件内容的数据类型是什么。

所以我的问题是:

如何查看随机文件内容的数据类型是什么?

【问题讨论】:

嗨,贴一些代码会更清楚! 你不能。您必须记住按照您编写它们的顺序阅读它们。一旦它们在文件中,它们就只是字节。 看到这个***.com/questions/17293991/… 你可以像type length value type length value一样存储它 ***.com/questions/447898/what-is-object-serialization 以及 ***.com/questions/15788182/java-serialization 【参考方案1】:

您通过 Streams 访问文件。 您从文件中读取的内容取决于您用于访问该文件的流类。

Java 中有两个主要组(直到 Java 7): 1. "...Reader" 类。这里文件的内容被读取为字符序列。 2.“...流”类。这里文件的内容被读取为一个字节序列。

但是,您可以通过 ObjectOutputStream 和 ObjectInputStream 类“直接”在文件中写入和读取 Java 对象。使用它们,您可以读/写序列化的 Java 对象和原始数据类型。有了这个,您可以通过以下方式检查您想要的内容:

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("filename"));
Object o = ois.readObject();
if (o instanceof)
//... checked

(仅当文件的内容是序列化的 java 对象时才有效。)

【讨论】:

【参考方案2】:

没有简单的通用方法可以自动执行此操作。

如果您想保留附加信息作为类型,则必须将其与数据一起存储。

以下是一些关于如何存储类型信息的示例。

使用注释。始终使用相关数据显式存储类型,例如如果一行上的第一个标记等于"type3",则以下数据表示一个浮点数(例如)。

type1 herecomesthedata1
type2 11011010111011010
type3 55.67

对于包含变量树的更复杂的数据,请使用众所周知的数据注释标准,例如 JSON 或 XML。

使用结构。始终以相同的顺序编写变量,例如一行中的第一个标记始终是整数,下一个始终是浮点等。在读取数据时使用此信息。

123 43.11
456 78.90

使用 Java 的内置序列化工具作为ObjectOutputStreamObjectInputStream(仅适用于实现java.io.Serializable 的原始类型和对象)。

示例(使用结构确定类型):

int i = 5;
double d = 7.3;

try (ObjectOutputStream out = new ObjectOutputStream(
                     new FileOutputStream("test.dat"))) 
    out.writeInt(i);
    out.writeDouble(d);
 catch (IOException e) 
    System.err.println("An error occured writing to file");


i = 0;
d = 0.0;

try (ObjectInputStream in = new ObjectInputStream(
                   new FileInputStream("test.dat"))) 
    i = in.readInt();
    d = in.readDouble();
 catch (IOException e) 
    System.err.println("An error occured reading from file");


System.out.println("i = " + i + " and d = " + d); // 5 and 7.3

【讨论】:

以上是关于如何检查文件中的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如果数据类型错误,如何跳过加载到 Pandas 数据框的 excel 文件的行(检查类型)

如何在运行时检查核心数据属性类型?

如何将 true 或 false 的值更改为文本值类型 我正在检查整个表中的行 注意该表是数据表类型?

SQL Server:检查列的数据类型

如何检查 html 文本框中给出的 php 中的数据类型?

如何在循环中读取数据框列值并检查每列的数据类型