本文介紹了字節(jié)數(shù)組到文件對(duì)象,而不保存到磁盤(pán)的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我有一個(gè)方法,它接受來(lái)自.txt或.docx文件的不同代碼部分中的byte[]
。我想從字節(jié)創(chuàng)建一個(gè)新的File
對(duì)象,以便以后從中讀取內(nèi)容,而不將該文件保存到磁盤(pán)。這個(gè)是可能的嗎?或者是否有更好的方法從文件字節(jié)中獲取內(nèi)容?
推薦答案
它不是這樣工作的。java.io.File
對(duì)象是一個(gè)簡(jiǎn)單的包裝:查看source code-它有一個(gè)String
字段,其中包含路徑,這是它除了一些記賬內(nèi)容之外的所有內(nèi)容。
無(wú)法使用java.io.File對(duì)象表示任意數(shù)據(jù)。j.i.File
對(duì)象表示磁盤(pán)上的文字文件,不能表示其他任何內(nèi)容。
Files.readAllBytes
從字節(jié)中獲取內(nèi)容,即..該方法為何具有該名稱。
通常的解決方案是,某些庫(kù)中接受文件的方法被重載;也會(huì)有一個(gè)接受byte[]
的方法,或者,如果不存在,則接受InputStream
的方法(您可以很容易地從byte[]
創(chuàng)建一個(gè)is:new ByteArrayInputStream(byteArr)
將完成這項(xiàng)工作)。
如果您使用的API不包含任何此類方法,則它是一個(gè)糟糕的API,您應(yīng)該找到其他方法,或者咬緊牙關(guān)接受您正在使用的糟糕的API,以及這意味著的所有解決方法,包括必須將字節(jié)保存到磁盤(pán)以滿足愚蠢的API。
但先看一下;我打賭有一個(gè)byte[]
和/或InputStream
變體(或者可能是URL
、ByteBuffer
或ByteStream
或其他幾個(gè)更奇異的變體)。
這篇關(guān)于字節(jié)數(shù)組到文件對(duì)象,而不保存到磁盤(pán)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,