我有一個字符串對象,現在是因爲它來自包含不同文件類型的文件夾的差異,而不是其中的所有內容都編碼在相同的字符集中。在Groovy中寫入一個沒有任何字符轉換的磁盤字符串
正確的代碼在字符串中,但每當我嘗試訪問字符串時,groovy都會嘗試幫助並解碼字符串,從而導致混亂。
下面的配置似乎做什麼,我需要
String decoded_diff = "String that contains codes from different character encodings"
patch_file_name = 'changes.patch'
patch_file = new File(pwd(), patch_file_name)
patch_file.delete()
max_block_size = 1024 * 1024
char[] char_buffer = new char[max_block_size]
block_start = 0
patch_length = decoded_diff.length()
while (true) {
block_size = Math.min(patch_length - block_start, max_block_size)
decoded_diff.getChars(block_start, block_start + block_size, char_buffer, 0)
block_start += block_size
byte[] byte_buffer = new byte[block_size]
for (int i = 0; i < block_size; i++) {
byte_buffer[i] = (int) char_buffer[i]
}
patch_file.append(byte_buffer)
if (block_start == patch_length) break
}
然而,sloooow
是否有快速的方式來達到同樣的事情?最終的補丁文件必須與原始的差異文件相同。不幸的是,我不能發送文件本身(jenkins目前不支持管道作業中的文件參數),所以我必須將其轉義並作爲json參數列表的一部分發送,因此在接收端會出現這種令人痛苦的結果。
爲什麼不能讀取文件的字節?而不是閱讀字符串? –
我沒有閱讀文件。當我說我沒有發送文件時,或許我不夠清楚。這段代碼位於接收端,所以String對象實際上來自POST請求中表單的json對象。 –
哦,當我說這很慢時,我的意思是。它現在正在研究一個400k文件,時間和10分鐘,這對我來說絕對沒有意義。這是否與jenkins內部運行有關? –