問題タブ [pathtoolongexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# コードの PathTooLongException
私は次のコードを持っています:
次の行で PathTooLongException エラーが発生し続けます。
アプリケーションはドライブにドリルダウンし、ドライブ内のすべてのファイル/フォルダーを見つけます。このパスは変更できませんが、260 文字を超えているため、これを回避するにはどうすればよいですか?
c# - DirectoryInfo、FileInfo、および非常に長いパス
非常に長いパスを持つ DirectoryInfo、FileInfo を操作しようとしています。
- \\?\c:\long パスを使用してみます (fileInfo と DirectoryInfo で不正な文字を取得しました)
- file://c:/long パスを使用してみます (サポートされていない uri を取得しました)
~ をパスなどで使用できますか?
この投稿を読みましたが、API を呼び出す別の方法を使用したいと思います。それは他の解決策ですか?
使用する Microsoft の記事があります \\? ファイル パスリンク テキスト内
問題は、非常に長いパス、DirectoryInfo、および 256 文字よりも長いパスの FileInfo をどのように処理できるかです。
c# - Directory.SetCurrentDirectory が PathTooLongException をスローする
スタックオーバーフローには関連する質問がいくつかありますが、私の状況が異なるか、状況に関連付けるにはあまりにも愚かです。誰かがこれで私を助けてくれることを願っています。さらに、私は .NET 開発者でさえないので、間違った用語の使用について事前にお詫び申し上げます。
私のシナリオは次のとおりです。.net アプリケーションを展開するために使用されるツール (ワンクリック?) は、フルネームが 300 文字を超えるディレクトリに配置します。アプリケーションは、サード パーティのコンポーネント (dbstore と呼びましょう) を使用して、アプリケーションの展開ディレクトリにある指定されたファイルを処理します。
これまではAssembly.GetExecutingAssembly().GetName().CodeBase
、dbstore に渡すファイルの完全修飾名を作成するために を使用していました。しかし、dbstore は古いスタイルの API を使用しているため、ファイルを開こうとすると失敗します。
dbstore はすぐには変更されないことが予想されるため、アプリケーションの chdir をデプロイメント ディレクトリに移動し、現在のディレクトリ内の相対パス名をそれに渡すことをお勧めします。これは、C# コードで受け入れられた応答PathTooLongException で説明されているアプローチでもあります。
Directory.SetCurrentDirectory
ただし、それもスローすることがわかりましたPathTooLongException
。これは、UNC パス名を使用している場合でも発生します (例: で始まる名前)。\\?\0000000000000\...
私は根本的に間違ったことをしていますか?使用する別の機能はありますか?
編集:私が探しているものを達成する方法はないようです。私が知る限り、現在のディレクトリを長いパスに設定する方法はありません。
visual-studio-2010 - Visual Studio 拡張機能をインストールすると PathTooLongException が発生する
Visual Studio 2010 拡張機能のインストールに問題があります。
インストール エラー: System.IO.PathTooLongException: C:\Users\felix.DOMAIN\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\Vendor\Vendor 2011 Developer Tools\1.0\ProjectTemplates\CSharp\XYZ\1033\Vendor.XyzDeveloperTools .XyzPackageProject.zip
.vsix ファイルをダブルクリックして拡張機能をインストールします。そのため、Vendor 2011 Developer Tools を VendorTools などに短縮するオプションはありません。拡張機能をインストールする他の (より手動の) 方法はありますか?
ちなみに全長は199文字。248文字の制限をはるかに下回っていると思いました。違いがある場合は、Win7 64ビットを使用します
c# - PathTooLongException を克服するには?
そのため、コンピューター上の重複ファイルをスキャンするプログラムを作成しています。これまでに見たプログラムは非常に遅く、および/またはメモリを大量に消費しますが、PathTooLongException
ドライブ全体を試してみるとエラーが発生しました。C# コードで PathTooLongException を読んだ後、次の 2 つの質問に興味を持ちました。
レベルを変更するたびに現在のディレクトリを切り替えると、パフォーマンスが低下しますか?
すべてのファイルのディレクトリ構造を取得するより良い方法はありますか (おそらく、tree.exe のようなものを呼び出して解析することによって)?
silverlight - Silverlight IsolatedStorage PathTooLongException
WinXP SP3マシンの50%でこの例外が発生します。260文字のパス長制限について知っていますが、何ができますか?
私はすでにファイルにサブディレクトリなしで2文字だけの名前を付けていますが、IsolatedStorageへのパスはWinXPマシンの半分ですでに260文字を超えています。
c# - PathTooLongException からパス情報を取得する
.Net 4.0 で DirectoryInfo と FileInfo を使用して、ディレクトリ ツリー内のファイルを列挙していますが、PathTooLongException が発生しています。簡易版は以下
エラーがスローされたときに、問題の原因となったファイル パスを知りたいです。FullName
明らかに、それがエラーになったので、私は求めることができません。から名前を取得できますfile.Name
が、パスの残りの部分を取得できない場合は、ファイルが見つかったにもかかわらず、 が正常に機能しましfile.Directory
たPathTooLongException
! DirectoryInfo
(実際のコードはもっと複雑なので、私はそれを使用できません)。
スタック トレースを見ると、内部パス (file.FullPath
デバッグから保護されていることがわかります) を使用しているようで、ディレクトリを完全な (特大の) パスから引き裂こうとしています。問題のほとんどは、System.IO.Path.NormalizePath
.Net 4.0 でいくつかの変更が加えられたと聞いています。以前のバージョンのフレームワークは試していません。
私の質問:
- この例外から完全なパスを取得するにはどうすればよいですか。有用な情報なしで渡されたようです。
- ファイル名を切り取るために、フレームワークがパス内の文字を制限する必要があるのはなぜですか?
助けてくれてありがとう、
アンディ
c# - PathTooLongException C#4.5
一部のフォルダを260文字以上コピーできません(例:F:\ NNNNNNNNNNNNNNNN \ NNNNNNNNNNN \ ROOT \ $ RECYCLE.BIN \ S-1-5-21-3299053755-4209892151-505108915-1000 \ $ RMSL3U8 \ NNNNNNNNN NNNNNNNN \ NNNNNNNNNNN \ NNNNNNNNNN \ NNNNNNNNNN \ publish \ Application Files \ TNNNNNNNNNNNN_1_0_0_0 \ NNNNNNNNNNNN.exe.manifest)標準のDrectoryInfo.Create();を使用して他の場所に移動します。\?\または\?\ UNC \( "\\?\ UNC \"など)を追加すると、別のArgumentExceptionがスローされます。私は何が間違っているのですか?Directory.SetCurrentDirectory()を使用せずに他に何ができますか?
c# - 長いパスをサポートするC#I / Oライブラリ(PathTooLongExceptionを解決するため)
私のオープンソースソフトウェアは、リモートフォルダをローカルデスクトップに同期します。リモートフォルダは、パスの長さに制限がないAlfrescoに置くことができます(/root/very/very/very/long/name.txt
)。
私が使用したアプリケーションを開発するとき、System.IO.File.OpenWrite
そしてSystem.IO.Stream.Write
、それらは数百文字を超えるパスをサポートしていないPathTooLongException
ようです。そのため、ユーザーは長いパスを操作するときのようなエラーを報告します。
UNCパスは、一部のアプリケーションとの非互換性につながるため、絶対に避ける必要があります。
この場合、どのライブラリ/コードを使用する必要がありますか?
オープンソースのC#である必要があります。