第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

對(duì) unix 文件進(jìn)行阻塞寫入操作

對(duì) unix 文件進(jìn)行阻塞寫入操作

函數(shù)式編程 2023-08-09 15:49:39
有沒有某種方法可以在unix上打開一個(gè)阻塞的文件進(jìn)行寫入(在完成“寫入”操作之前實(shí)際上等待數(shù)據(jù)進(jìn)入文件?我有一個(gè)程序,它從列表中獲取結(jié)果行并將它們寫入文件中。我當(dāng)前的實(shí)現(xiàn)如下(我刪除了每行完成的處理)    ArrayList<String> lines = new ArrayList<>();    BufferedReader in = new BufferedReader(new FileReader(inFile));    String line;    while((line = in.readLine()) != null){      lines.add(line);    }    int written = 0;    PrintWriter out = new PrintWriter(new FileWriter(outFile));    for(String l : lines){      written++;      out.println(l);      if(written % 10000 == 0)        Message.info("lines written "+written);    }    out.close();當(dāng)前行為如下:[17:12:43 INFO ] 行寫入 10000[17:12:43 INFO ] 行寫入 20000[17:12:43 INFO ] 行寫入 30000[17:12:44 INFO ] 行寫入寫入 40000[17:12:44 INFO ] 行寫入 50000[17:12:44 INFO ] 行寫入 60000[17:12:45 INFO ] 行寫入 70000[17:12:45 INFO ] 行寫入 80000[17:12: 45 INFO ] 寫入 90000 行[17:12:46 INFO ] 寫入 100000 行程序運(yùn)行速度非???,但最后等待(30-40秒)所有數(shù)據(jù)(4Go)寫入文件才結(jié)束。(在此期間我可以看到文件在磁盤上增長)當(dāng)我想要的時(shí)候,只有當(dāng)數(shù)據(jù)確實(shí)在文件中時(shí)才顯示我的信息消息:程序看起來會(huì)更慢,但會(huì)在最后一個(gè)之后立即結(jié)束信息。我嘗試使用 BufferedWriter (來自 new BufferedWriter() 和 Files.newBufferedWriter())、FileOutputStream、OutputStream,但所有這些似乎都只建議非阻塞 IO 操作該程序在 Ubuntu 上運(yùn)行(我讀到該實(shí)現(xiàn)依賴于文件系統(tǒng))那么,有什么方法可以在執(zhí)行下一行代碼之前等待 println()/write() 操作完成嗎?我“感覺”java將實(shí)際寫入委托給操作系統(tǒng),并且不等待數(shù)據(jù)在磁盤上繼續(xù),但由于java在退出之前等待最后一次寫入完成,因此必須有一個(gè)每行之后的等待方式
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

骯臟的解決方法:每 10,000 行,我關(guān)閉文件并使用StanddardOpenOption.APPEND.
這具有預(yù)期的行為,并且只有可接受的時(shí)間開銷。

干凈的解決方案:使用“StanddardOpenOption.SYNC”打開文件。
這具有預(yù)期的行為,但時(shí)間開銷很大


查看完整回答
反對(duì) 回復(fù) 2023-08-09
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)