4

メインフレームのFTPからローカルシステムにファイルを転送するJavaコードがあります。問題は、指定されたパスがファイルなのかフォルダなのかをどうやって見分けるのかということです。可能な拡張機能が何であるかわからないため、拡張機能のチェックを使用できません。また、次のコードは常にfalseを返します。

 fileSystem.isFile("fileName");

.メインフレームファイルシステムであるため、パスはではなくで区切られて/いるため.、最後のチェックも機能しません。

ここでも、入力パスから出力場所にデータをストリーミングします。

url="connection url of the mainframe"
bufferedInputStream = new BufferedInputStream(url.getInputStream());

ソースパスにファイルがある場合は、ファイルの内容を宛先に書き込み、ソースパスにディレクトリがある場合は、ディレクトリにあるファイルの名前やその他のプロパティを宛先に書き込みます。

ソースがディレクトリの場合の出力例は

Name    VV.MM   Created       Changed          Size  Init    Mod    Id
QQQQ    01.00  2009/12/18   2009/12/18 12:15    18    18     0    XXXX 
RRRR    01.00  2009/12/18   2009/12/18 12:16     19     19    0  XXXXX

ソースパスがファイルなのかフォルダなのかを判断するにはどうすればよいですか?

4

3 に答える 3

2

答えはありませんが、Zosにアクセスしているようです。ゾスについて何も知らない人のために

  • Zosにはディレクトリがありません
  • 彼がディレクトリと呼んでいるのはおそらくPDSです(データセットのPDSを参照)。メインフレームのバックグラウンドを持っていない人にとっては、アーカイブの一種(jar、Tar、zipなど)と考えてください。これは完全に正確な説明ではありません。PDSにはいくつかの制限があり、jarファイルの使用にはありませんが、jarファイルはPCに最も近いアナロジーです。*NIXの世界です。

  • それらをどのように検出しますか-わからない、アクセスできるファイル属性がある可能性があります

于 2013-01-18T05:18:51.683 に答える
1

メインフレーム上のパスがファイルなのかPDS(分析的にはディレクトリ)なのかを判断する方法を見つけました。ライブラリを使用org.apache.hadoop.fs.ftp.FTPFileSystemしましたが、次のスニペットはファイルのリストを返すことで機能します。

FTPFile[] files = ftp.listFiles(); 

をループしてfilesチェックfile1.isFile()するだけで十分です。を使用してファイルを一覧表示する前に、現在の作業ディレクトリに移動することを忘れないでください。 ftp.cwd(inputPath);

メインフレームファイルシステムの説明については、ブルースマーティンの回答とそれに続くコメントを参照してください。。

于 2013-01-21T06:08:43.510 に答える
0

使用しているJavaのバージョンや、ホストファイルシステム用の特別なライブラリを使用しているかどうかはわかりません。

代わりにjava.io.File#isDirectory()を使用できますか?

于 2013-01-17T06:44:43.410 に答える