Jak zjistit skutečnou velikost souboru aneb průběh kopírování   otázka

VB.NET, I/O operace

Rád bych zobrazoval průběh kopírování souborů na flashku. Jde o větší soubory, takže by stálo za to vidět přímo průběh kopírování jednotlivých souborů.

Zatím mám hotové to, že mám dvě vlákna:

1) Vlákno, které kopíruje soubory pomocí FileSystem.CopyFile.

2) Vlákno, které má zjistit, kolik už se zkopírovalo.

Jenže problém je, že nevim, jak zjistit, kolik už se skutečně podařilo zapsat. File.Length toho zapisovaného souboru totiž vrací už od začátku kopírování cílovou velikost souboru. (Což je nakonec i logické.) Jenže já bych chtěl vidět přímo průběh kopírování, kolik je aktuálně fyzicky hotovo.

Je možné nějak zjistit kolik se již podařilo zapsat?

Díky,

Lukáš

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano. Napsat si vlastní kopírovací metodu, nebo použít Windows API.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

:-) díky za odpověď. Mohl byste to prosím trochu rozvést?

Tou vlastní kopírovací metodou myslíte otevřít zdrojový soubor v binárním režimu, vytvořit cílový soubor a binárně do něj zapisovat? Nebo co máte na mysli?

Přes Windows API lze udělat kde co, to vim, ale mohl byste být konkrétnější, co mám hledat?

Díky,

Lukáš

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, zkopírovat pomocí binárního čtení a zápisu do souboru. Pochybuji však, že se vám to podaří udělat dostatečně efektivně, protože je třeba brát v úvahu buffering dat a další věci, které urychlují čtení a zápis.

Pomocí Windows API se můžete inspirovat zde:

http://www.codeproject.com/KB/shell/csdo...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hmmm - asi to není nic extra jednoduchýho...

Ovšem zajímavý je, že když třeba nějaký software vytváří objemnější soubor - konkrétně třeba Corel vytváří nějaké PDF ve velkém rozlišení, tak to chvíli trvá. A pokud během té doby mám otevřený TotalCommander, tak se dá vidět, že velikost souboru během operace roste. Tudíž si řikám, že by mohlo jít zjistit aktuální velikost souboru i externě, tedy bez nutnosti přímé kontroly procestu kopírování.

Lukáš

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Periodicky zjišťovat velikost souboru a z toho počítat průběh kopírování je naprostá amatérská zhovadělost. Stejně si většina programů při zápisu do souboru předalokuje potřebné místo a soubor uzamkne pro zápis i čtení ostatním aplikacím.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Hmmm - díky za povzbuzení :-)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback