質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

844閲覧

ファイル一覧をバイナリで取得する方法

appdev

総合スコア16

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2018/08/01 13:53

C#で、Linux側で共有されたファイル一覧をGetFilesで参照していますが、
半角カナで作成されたファイルが文字化けしてしまい、正しく扱えなくて困っています。

C#

1System.IO.Directory.GetFiles(@"C:\hoge", "*", System.IO.SearchOption.AllDirectories);

本来、半角カナを利用する運用自体も良くない事は承知していますが、
やめさせる事が困難な状況です。

エンコードを指定するまたはバイトでファイル一覧を取得する方法を
ご存知の方がいましたら教えていただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asm

2018/08/02 05:12

C#はLinuxで動かすことを想定しているのでしょうか? それとも、windowsからLinuxで共有されたファイルを見たいだけですか?
appdev

2018/08/03 15:58

windowsからLinuxで共有されたファイルを見たいです。Linuxで動作するアプリから出力されており、その中では半角カナも扱えるような処理が入っている様です。
YAmaGNZ

2018/08/05 15:03

Linux側(samba等)で使用する文字コードを変更するとかできないのでしょうか?
appdev

2018/08/09 14:08

ご質問ありがとうございます。sambaの設定ファイルにて、charsetをsjisにし、windowsのエクスプローラーで確認した所、文字化けして表示されました。これをwin32APIのバイトで取得したところ、半角カナで復元出来ました。ただ、ファイルの内容も読み込む必要があるため、もう少し工夫が必要な状況です。
guest

回答2

0

ベストアンサー

FindFirstFileをC#で使う方法

同様にFindNextFileおよびFindCloseを呼び出すように

C#

1[DllImport("kernel32.dll", CharSet=CharSet.Auto)] 2public static extern bool FindNextFile(IntPtr hFindFile, out FindData 3 lpFindFileData); 4[DllImport("kernel32.dll")] 5public static extern bool FindClose(IntPtr hFindFile);

してやるといいです

どうしてもbyte配列で欲しければ

c#

1[MarshalAs(UnmanagedType.ByValArray, SizeConst=260)] 2public byte[] fileName = null;

に構造体を書き換えます

投稿2018/08/03 16:36

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

appdev

2018/08/05 14:25

ご回答ありがとうございます。遅くなり申し訳ございません。 検証したところ、バイト配列で受け取ることが出来ました。 ただ、バイトでもアンダーバーとなってしまっていましたので、 根本的な解決方法はもう少し検討したいと思います。 今後の知識として覚えておきたいと思います。
guest

0

C言語の場合は wchar_t, char っていう文字用の型がありまして、ワイド文字, 多バイト文字 といいます。
この種類が違うためじゃないかなと。

C++なら std::wstring, std::string ですね。

C# はわかりませんが。

もしくは 【C#】指定された文字列に半角カナ文字が含まれているかどうかを返す関数 のように 半角カナが含まれているかどうかをチェックして、trueなら 半角カナが使える型とかに変換するとか?

投稿2018/08/02 04:32

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

appdev

2018/08/03 15:54

ご回答ありがとうございます。 C#では、取得した結果をバイト等に変えてみましたが、半角カナが全てアンダーバーで扱われてしまいまいした。 Win32APIで実現できるか調べてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問