2014-09-29 66 views
2

我與類型爲intchardoublebyteboolean並從文件中寫入數據的數據類型。如何檢查是在一個文件

我有寫我的數據到文件的方法。

對於閱讀方法,我將文件的內容放入ArrayList中,然後將它們轉換爲普通數組。但是爲了做到這一點,我必須知道文件內容的數據類型是什麼。

所以在這裏我的問題是:

  • 我如何檢查,看看內容的隨機文件的數據類型是什麼?
+0

您好,張貼一些代碼,將更加清晰! – BilalDja 2014-09-29 20:23:42

+4

你不行。你必須記得按照你寫的順序閱讀它們。一旦他們在文件中,他們只是字節。 – Blorgbeard 2014-09-29 20:26:08

+1

看到這個http://stackoverflow.com/questions/17293991/how-to-write-and-read-java-serialized-objects-into-a-file – 2014-09-29 20:34:23

回答

0

您可以通過Streams訪問文件。 從文件中讀出的內容取決於用於訪問文件的流類。

Java中有兩個主要組(高達Java 7): 1.「... Reader」類。這裏文件的內容被讀取爲字符序列。 2.「... Stream」類。這裏文件的內容被讀取爲一系列字節。

但是,您可以通過ObjectOutputStream和ObjectInputStream類將文件直接寫入文件或從文件讀取Java對象。有了它們,您可以讀/寫序列化的Java對象和原始數據類型。有了這個,你可以檢查你想要的方式如下:

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

(這僅適用於該文件的內容是序列化的Java對象)

0

有是做沒有簡單的通用方式這自動。

如果要保留其他信息作爲類型,則必須將其與數據一起存儲。

下面是一些如何存儲類型信息的例子。

  • 使用註釋。始終將相關數據與相關數據一起存儲,例如如果一行上的第一個標記等於"type3",則以下數據表示浮點數(例如)。

    type1 herecomesthedata1 
    type2 11011010111011010 
    type3 55.67 
    

    對於使用變量樹的更復雜的數據,使用衆所周知的數據註釋標準作爲JSON或XML。

  • 使用結構。總是按照相同的順序寫入變量,例如一行上的第一個標記始終是一個整數,而下一個始終是浮點數等。讀取數據時使用此信息。

    123 43.11 
    456 78.90 
    
  • 使用Java的內置序列化UTILITESObjectOutputStreamObjectInputStream(僅適用於基本類型和實現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 
    
相關問題