最新記事

XSLT: 特定のディレクトリからファイル名を取得するにはどうすればいいですか? 質問する
xml
xslt
file
filesystems

XSLT: 特定のディレクトリからファイル名を取得するにはどうすればいいですか? 質問する

XSLT には、ディレクトリ パスを取得して、その中のすべてのファイルを返す関数がありますか? 次のようなxmlファイルがあります fileA.xml fileB.xml 現在、 というディレクトリがありdir、その中にファイル と、その他の xml ファイルがたくさんありますfileX.xml。fileY.xmlこれらのファイルを元の xml ファイルに追加して、次の内容を取得したいと考えています。 fileA.xml fileB.xml fileX.xml fileY.xml .... これを行う XSLT の方法はありますか? ディレクトリ ルートを受け取り、その中のすべてのファイルを反復処理できるものはありますか? その場合、次のようなものを呼び出すことができます。 0 [編集-解決策] すべての回答が非常に役に立ちました。私は最終的に外部ソリューション(saxon を使用)を見つけました。私のソリューションは私自身の状況に非常に特化していますが、ここに投稿すると他の人の役に立つかもしれないと思いました。 私は Ant を使用して Java Web アプリケーションを構築しており、デプロイ前にいくつかの XML ファイルを翻訳する必要があります。そのため、xsltクラスパスに「saxon9.jar」を追加して、タスクを使用してこの作業を実行していました。そして、私の xsl ファイルでは、次のような操作を実行しました。

Admin

リモートマウントでシンボリックリンクを機能させるにはどうすればいいですか? 質問する
linux
filesystems
symlink
nfs

リモートマウントでシンボリックリンクを機能させるにはどうすればいいですか? 質問する

サーバーAとBの2つがあります Aには/alphaと/betaの2つのファイルシステムがある シンボリックリンクがあります: ln -s /alpha/foo /beta/bar そのような: lrwxrwxrwx 1 root root 70 Dec 22 13:32 /beta/bar -> /alpha/foo 次に、NFSマウントを介してBにリモートで/betaをマウントします。 リンクは機能しなくなりました。 これを実現する方法はありますか。サーバー B の A:/alpha/foo にアクセスできるようにしたいのですが、/beta/bar シンボリック リンク経由でアクセスできるようにしたいと考えています。 マウントまたはリンクを変更する必要がありますか? それとも不可能なことをしようとしているのでしょうか? アップデート 「/alphaをサーバーBにマウントせずに」と追加すべきでした。つまり、シンボリックリンクをたどって実際のサーバーBが/beta/barにアクセスするたびに問題のファイル

Admin

パスのリストからファイルシステム(ファイル/ディレクトリ)を表すJavaツリー 質問する
java
data-structures
tree
filesystems

パスのリストからファイルシステム(ファイル/ディレクトリ)を表すJavaツリー 質問する

このようなパスのリストがあります /mnt/sdcard/folder1/a/b/file1 /mnt/sdcard/folder1/a/b/file2 /mnt/sdcard/folder1/a/b/file3 /mnt/sdcard/folder1/a/b/file4 /mnt/sdcard/folder1/a/b/file5 /mnt/sdcard/folder1/e/c/file6 /mnt/sdcard/folder2/d/file7 /mnt/sdcard/folder2/d/file8 /mnt/sdcard/file9 したがって、このパスのリスト (Stings) から、フォルダーをノードとして、ファイルをリーフとして持つ Java ツリー構造を作成する必要があります (リーフとして空のフォルダーは存在しません)。 私が必要としているのは、文字列(ファイルのパス)を渡し、ツリー内の正しい場所に追加して、まだ存在しない場合は正しいノード(フォルダー)を作成するaddメソッドだと思います。 このツリー構造では、ノードにいるときにノードのリストとリーフのリストを取得する必要があります (ただし、これはツリーの通常の機能になると思います) パスとしては常に文字列を使用し、実際のファイルやフォルダーは使用しません。すぐに使用できるものや、開始するためのソース コードはありますか? どうもありがとうございます。

Admin

ワイルドカードを使用したファイル名のマッチング 質問する
c++
c
windows
filesystems

ワイルドカードを使用したファイル名のマッチング 質問する

独自のファイルシステムのようなものを実装する必要があります。1つの操作はFindFirstFileです。呼び出し元が次のようなものを渡したかどうかを確認する必要があります。。、sample*.cpp など。私の「ファイル システム」実装は、「ファイル名」のリストを char* の配列として提供します。 このファイル名の一致を実装する Windows 関数またはソース コードはありますか?

Admin

XML ファイルが null 文字で埋められる原因は何でしょうか? 質問する
c#
xml
filesystems
ntfs
null-character

XML ファイルが null 文字で埋められる原因は何でしょうか? 質問する

これは難しい質問です。答えるには、ファイル システムに関する高度な知識が必要になると思います。 .NET Framework 4.0 をターゲットとする WPF アプリケーション「App1」があります。このアプリケーションには、既定の設定が保存されるSettings.settings標準ファイルを生成するファイルがあります。ユーザーが設定を変更すると、変更内容が に反映されます。これはすべて標準的な .NET の動作です。ただし、場合によっては、顧客のマシン上のファイルが想定どおりでなく、アプリケーションがクラッシュすることが判明しました。App1.exe.configAppData\Roaming\MyCompany\App1\X.X.0.0\user.configuser.config 問題は次のようになります: は、user.configXML で埋められた場合のサイズとほぼ同じですが、XML ではなく、一連の NUL 文字になっています。文字 0 が何度も繰り返されています。このファイルの変更に至るまでに何が起こったかについては、情報がありません。 削除するだけで、Common Language Runtime が新しいものを生成するため、顧客のデバイスでこの問題を解決できますuser.config。設定に加えた変更は失われますが、再度変更を加えることができます。 しかし、別の WPF アプリケーション「App2」で別の XML ファイルを使用してこの問題に遭遇しましたinfo.xml。今回は、ファイルが CLR ではなく独自のコードによって生成されたため、状況が異なります。共通点は、どちらも C# WPF アプリケーションであり、どちらも XML ファイルであり、どちらの場合もテストで問題を完全に再現できないことです。これは、C# アプリケーションが XML ファイルまたは一般的なファイルと対話する方法に関係しているのでしょうか。 現在のアプリケーションでは問題を再現できないだけでなく、意図的にエラーを生成するカスタム コードを記述しても問題を再現できません。ファイルが null で埋められる原因となる XML シリアル化エラーやファイル アクセス エラーは 1 つも見つかりません。一体何が起こっているのでしょうか。 App1 は、およびをuser.config呼び出して、プロパティを取得および設定することでアクセスします。例:Upgrade()Save() if (Settings.Default.UpgradeRequired) { Settings.Default.Upgrade(); Settings.Default.UpgradeRequired = false; Settings.Default.Save(); } App2 はinfo.xmlXML をシリアル化および逆シリアル化してアクセスします。 public Info Deserialize(string xmlFile) { if (File.Exists(xmlFile) == false) { return null; } XmlSerializer xmlReadSerializer = new XmlSerializer(typeof(Info)); Info overview = null; using (StreamReader file = new StreamReader(xmlFile)) { overview = (Info)xmlReadSerializer.Deserialize(file); file.Close(); } return overview; } public void Serialize(Info infoObject, string fileName) { XmlSerializer writer = new XmlSerializer(typeof(Info)); using (StreamWriter fileWrite = new StreamWriter(fileName)) { writer.Serialize(fileWrite, infoObject); fileWrite.Close(); } } この問題は Windows 7 と Windows 10 の両方で発生しました。この問題を調査していたところ、Windows 8.1 でも同じ XML 問題が発生したという次の投稿を見つけました。保存されたファイルにはNUL文字のみが含まれる場合があります これを防ぐためにコードを変更できる部分はありますか、それとも問題は .NET の動作に深く関わっているのでしょうか? 私には3つの可能性があるように思えます: CLR は XML ファイルに null 文字を書き込みます。 ファイルの内容を移動せずに、ファイルのメモリ アドレス ポインターが別の場所に切り替えられます。 ファイル システムはファイルを別のメモリ アドレスに移動しようとし、ファイルの内容は移動されますが、ポインターは更新されません。 2 と 3 の方が 1 よりも可能性が高いように感じます。これが、ファイル システムに関する高度な知識が必要になる可能性があると述べた理由です。 問題を再現、修正、または回避するのに役立つ情報があれば、ぜひお知らせください。ありがとうございます!

Admin

Java経由で既存のファイルにテキストを挿入する 質問する
java
file
file-io
filesystems

Java経由で既存のファイルにテキストを挿入する 質問する

テキスト ファイルを編集する簡単なプログラム (Java で作成) を作成したいと考えています。特に、テキスト ファイル内のランダムな位置に任意のテキストを挿入するプログラムを作成したいと考えています。この機能は、現在作成中の大規模なプログラムの一部です。 java.util.RandomAccessFile に関する説明を読むと、ファイルの途中で書き込み操作を実行すると、既存のコンテンツが上書きされるようです。これは、(可能であれば)避けたい副作用です。 これを実現する簡単な方法はありますか? 前もって感謝します。

Admin

忙しい環境でも信頼性の高いファイル保存(File.Replace) 質問する
c#
.net
windows
filesystems

忙しい環境でも信頼性の高いファイル保存(File.Replace) 質問する

私は定期的にデータをディスクに保存する必要があるサーバー ソフトウェアに取り組んでいます。予期しない状況が発生した場合でも、古いファイルが上書きされ、ファイルが破損しない (たとえば、部分的にのみ上書きされる) ことを確認する必要があります。 私は次のパターンを採用しました: string tempFileName = Path.GetTempFileName(); // ...write out the data to temporary file... MoveOrReplaceFile(tempFileName, fileName); ここで、MoveOrReplaceFile は次のとおりです。 public static void MoveOrReplaceFile( string source, string destination ) { if (source == null) throw new ArgumentNullException("source"); if (destination == null) throw new ArgumentNullException("destination"); if (File.Exists(destination)) { // File.Replace does not work across volumes if (Path.GetPathRoot(Path.GetFullPath(source)) == Path.GetPathRoot(Path.GetFullPath(destination))) { File.Replace(source, destination, null, true); } else { File.Copy(source, destination, true); } } else { File.Move(source, destination); } } これは、サーバーがファイルに排他的にアクセスできる限り、うまく機能します。ただし、File.Replace は、ファイルへの外部アクセスに非常に敏感であるようです。ウイルス対策またはリアルタイム バックアップ システムを備えたシステムでソフトウェアを実行するたびに、ランダムな File.Replace エラーがポップアップ表示され始めます。 System.IO.IOException: 置換するファイルを削除できません。 私が排除した考えられる原因をいくつか挙げます: 未解放のファイルハンドル: using() を使用すると、すべてのファイル ハンドルができるだけ早く解放されます。 スレッドの問題: lock() は各ファイルへのすべてのアクセスを保護します。 異なるディスクボリューム: File.Replace() は、ディスク ボリューム間で使用すると失敗します。私のメソッドは既にこれをチェックしており、File.Copy() にフォールバックします。 以下は私が見つけたいくつかの提案と、なぜそれらを使わない方が良いのかです。 ボリュームシャドウコピーサービス: これは、問題のあるサードパーティ製ソフトウェア (バックアップやウイルス対策モニターなど) も VSS を使用している場合にのみ機能します。VSS を使用するには大量の P/Invoke が必要であり、プラットフォーム固有の問題があります。 ファイルのロック: C# では、ファイルをロックするには FileStream を開いたままにする必要があります。これにより、サードパーティのソフトウェアは排除されますが、1) File.Replace を使用してファイルを置き換えることはできず、2) 前述のように、偶発的な破損を避けるために、最初に一時ファイルに書き込むことをお勧めします。 File.Replace を毎回機能させる方法、またはより一般的には、ディスク上のファイルを確実に保存/上書きする方法についてのご意見をいただければ幸いです。

Admin

Node.js - ファイル システムでファイルの種類を取得する、2012 年頃のソリューション 質問する
javascript
node.js
filesystems
file-type

Node.js - ファイル システムでファイルの種類を取得する、2012 年頃のソリューション 質問する

image/pngコンテンツ タイプを設定するには、Node.js を使用してファイルのファイル タイプを取得する必要があります。ファイル拡張子を簡単に確認できることはわかっていますが、コンテンツ タイプが またはであるはずの拡張子のないファイルもありますtext/html。 これは私のコードです (あまり意味がないことはわかっていますが、これが必要なベースです)。 var http = require("http"), fs = require("fs"); http.createServer(function(req, res) { var data = ""; try { /* * Do not use this code! * It's not async and it has a security issue. * The code style is also bad. */ data = fs.readFileSync("/home/path/to/folder" + req.url); var type = "???"; // how to get the file type?? res.writeHead(200, {"Content-Type": type}); } catch(e) { data = "404 Not Found"; res.writeHead(404, {"Content-Type": "text/plain"}); } res.write(data); res.end(); }).listen(7000); 私はそれに対応する関数を見つけられなかったAPIについてでは、どうすればいいのでしょうか?

Admin

python3バイナリは/usr/local/binにありますが…
filesystems
symlink
macos

python3バイナリは/usr/local/binにありますが…

私はここで何が起こっているのか理解していません。私はMacを使用しています。/usr/local/bin/python3またはを実行するとエラーが/usr/local/bin/python3.8発生します。No such file or directoryここで何が起こるのかご存知ですか? ls -lの出力: -rwxr-xr-x 1 admin 246 Oct 24 2019 ipython3 lrwxr-xr-x 1 admin 38 Aug 11 17:25 python3 -> ../Cellar/[email protected]/3.8.5/bin/python3 lrwxr-xr-x 1 admin 45 Aug 11 17:25 python3-config -> ../Cellar/[email protected]/3.8.5/bin/python3-config lrwxr-xr-x 1 admin 40 Aug 11 17:25 python3.8 -> ../Cellar/[email protected]/3.8.5/bin/python3.8 lrwxr-xr-x 1 admin 47 Aug 11 17:25 python3.8-config -> ../Cellar/[email protected]/3.8.5/bin/python3.8-config

Admin

exfat-utilsとexFATカーネルドライバはどのような関係がありますか?
filesystems
drivers
exfat

exfat-utilsとexFATカーネルドライバはどのような関係がありますか?

フィロニックスから記事: 簡単に言えば、Linux 5.7はMicrosoftのexFATファイルシステムをよりよく実装し、以前のドライバよりも信頼性が高く機能性が豊富で、Samsungや他の企業ではこれを改善し続けます。 exfat-utilsLinuxカーネルが基本的にexFATをサポートしているなら、何が必要ですか? filesystem-utilsother/filesystem-toolsとそのカーネルドライバとの関係は同じですか?

Admin

実行中のサーバーのブートドライブにパーティションを安全に追加するには?
filesystems

実行中のサーバーのブートドライブにパーティションを安全に追加するには?

Ubuntu 20.04 Serverを実行しているホームサーバーがあります。実際のブートファイルシステムは、16 GBパーティションの240 GB SSDから起動します。 Disk /dev/sdc: 223.57 GiB, 240057409536 bytes, 468862128 sectors Disk model: KINGSTON SV300S3 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 5D341B88-AE4C-48F6-BB66-1C9861F16A8E Device Start End Sectors Size Type /dev/sdc1 2048 2203647 2201600 1G EFI System /dev/sdc2 2203648 35758079 33554432 16G Linux filesystem ドライブの残りの223 GBをパーティションとしてフォーマットしてマウントし、実際のデータを挿入できるようにします。 (私がこれをした理由は、ドライブの盗難を防ぐためにパーティションを暗号化したかったので、マウントするよりもサーバーが再起動されるたびにSSHを介してログインし、暗号化キーを使用してマウントする必要があるためです)。 (暗号化されたドライブから起動するようにしてください)。 今、このディスクにパーティションを追加し、有用fdiskな警告を表示したいと思います。 This disk is currently in use - repartitioning is probably a bad idea. It's recommended to umount all file systems, and swapoff all swap partitions on this disk. これが外部ドライブであれば簡単に理解できますが、umountシステムが起動してマウントされているドライブなので、それほど/単純ではありません(少なくとも私が理解したのはそうです。私はLinuxの専門家ではありません)。 手動介入なしにシステムが起動しない状況が発生しないようにしたいと思います。このマシンにはモニターとインターフェースできるハードウェアが不足しているため、デフォルトではこのマシンを使用して起動し、自動的に固定LAN IPを介してSSHアクセス可能な状態で起動します。そうでなければ本当に不便だから避けたいです。 ありがとうございます!

Admin