db2 - 从 java 程序中读取 MVS DataSet
问题描述
我正在尝试访问一个名为 XYZ 的数据集;我的代码是:
ZFile zFile = new ZFile("//X.Y.Z","r");
try {
String enc = ZUtil.getDefaultPlatformEncoding();
InputStream is = zFile.getInputStream();
BufferedReader rdr = new BufferedReader(new InputStreamReader(is, enc));
String line;
while ((line = rdr.readLine()) != null) {
System.out.println(line);
};
}finally {
zFile.close();
}
我得到这个例外:
com.ibm.jzos.ZFileException: X.Y.Z: Filename is not a valid MVS dataset or DD name; errno=99 errno2=0x0 last_op=0 errorCode=0x0
at com.ibm.jzos.ZFile.checkSecurityManager(ZFile.java:1592)
at com.ibm.jzos.ZFile.<init>(ZFile.java:475)
at it.Main.test(MainApp.java:20)
com.ibm.jzos.ZFileException: //'X.Y.Z': fopen() failed; EDC5049I The specified file name could not be located.; errno=49 errno2=0xc00b0641 last_op=50 errorCode=0x21708
at com.ibm.jzos.ZFile.fopen(Native Method)
at com.ibm.jzos.ZFile.doZFileOpen(ZFile.java:613)
at com.ibm.jzos.ZFile.<init>(ZFile.java:476)
at it.Main.test(MainApp.java:22)
有什么建议吗?谢谢。
解决方案
如果在 z/OS 上使用双斜线表示法来指代数据集,则假定数据集的高级限定符 (HLQ) 是当前用户的用户 ID。例如,//X.Y.Z
将解析为MEAT.X.Y.Z
假设我的用户名是我在 z/OS 上的用户 ID。如果指定的数据集是完全限定的数据集名称,则应添加引号。在您的情况下,//'X.Y.Z'
将解析为X.Y.Z
.
推荐阅读
- nginx - 无法使用反向代理 nginx
- xpath - 如何在逗号 XPath 后添加空格
- python - 测量执行特定代码行的硬件性能
- php - 避免双重预订/双重消费
- c# - WIX 自定义操作在 InstallFinalize 之后修改 INSTALLFOLDER 中的文件
- excel - 清理 InternetExplorer 实例时返回 HTMLDocument 的有效方法
- android - JS UI在处理cameraX的图像分析时被阻塞
- python - 如何通过点击pygame中的按键来改变我的球方向?
- typescript - 使用 TypeScript 选项安装 Quasar 测试扩展时出现 Tsconfig 错误
- python - Jupyter Notebook 无法配置和安装库