如何检查文件中的数据类型
Posted
技术标签:
【中文标题】如何检查文件中的数据类型【英文标题】:How do you check what type of data is in a file 【发布时间】:2014-11-24 08:03:48 【问题描述】:我正在将类型为int
、char
、double
、byte
和boolean
的数据写入文件和文件。
我有将数据写入文件的方法。
对于读取方法,我将文件内容放入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 的内置序列化工具作为ObjectOutputStream
和ObjectInputStream
(仅适用于实现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 文件的行(检查类型)