- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们的应用程序读取 XML 文件并将文本文件作为输出写入共享 NFS 文件系统。应用程序运行的 RHEL 版本为 7.6,NFS 为 veritas Access 版本 7.2 和 7.4(在两个环境上都有问题),NFS 服务器操作系统为 RHEL 7.2 和 RHEl 7.4(在两个环境上都有问题)
在实际写入文件之前已检查要写入文件的值。检索到的数据是正确的。一旦写入文件后,就会得到特殊字符。 (并不是一直都是同一个角色)
Veritas、RHEL 或 JAVA 上是否有任何可疑之处?请分享是否有任何可用的故障排除程序。
用于写入文件的Java API是Printwriter
已尝试所有可以匹配 NFS 服务器和 RHEL 客户端的编码。尝试了所有java编码JVM参数尝试所有文件打开关闭和刷新机制。将JAVA api更改为FileOutPutStream,并通过存储在StringBuilder中写入数据。
即使在尝试了所有可能的解决方案之后。但问题仍然存在。
代码:
osw = new OutputStreamWriter(new FileOutputStream(outFile, true), "ISO-8859-1");
coldelimiter = "\t";
rowdelimiter = "\n";
writer = new PrintWriter(new BufferedWriter(osw));
while (iterator.hasNext()) {
final DataToWrite data = iterator.next();
writer.write(data.getDataName());
writer.write(coldelimiter);
}
writer.write(rowdelimiter);
writer.flush();
预期:
testSystem testSystem 1 14 1 ManagedSystem 1 1 1310 2019-04-10 01:00:00 2019-04-10 10 Alpha testSystem +0100 1 0 4 15 29201 15MIN 2019-04-10 00:00:00 2019 13
实际:
测试系统测试系统1 14 1管理系统1 1 1310 2019-04-10 01:00:00 2019-04-10 10 Alpha Testsystem +0100 1 0 4 15 29201 15min 2019-04-10 004-10 00:00:00:00 2019 13 2019 13
我希望末尾有新行 [\n ],但有时像 `q,) 等垃圾字符会被附加到随机列中。
最佳答案
该代码看起来不错,理论上只有 rowdelimiter
可能会被覆盖,但为什么会出现一些随机字符。
您正在追加,但如果存在错误(例如文件结束字符),则追加后仍然会显示换行符。
如果数据没有错误的话,可能是读码的问题。使用反引号+q,它看起来像数据。
注意到:- 对于特殊的 Windows-Latin-1(和浏览器 Latin-1),可以使用 Windows-1252 i.o. ISO-8859-1。- Linux 上的换行符是 "\n"
,Windows 上的换行符是 "\r\n"。
osw = new OutputStreamWriter(new FileOutputStream(outFile, true), "Windows-1252");
final String coldelimiter = "\t";
final String rowdelimiter = "\r\n";
writer = new PrintWriter(new BufferedWriter(osw));
或者使用更封闭、更不易出错的代码:
final String coldelimiter = "\t";
final String rowdelimiter = "\r\n";
Charset charset = StandardCharsets.ISO_8859_1;
Path outPath = outFile.toPath(); // File outFile
Path outPath = Paths.get(outFile); // String outFile
try (BufferedWriter osw = Files.newBufferedWriter(outPath, charset,
StandardOpenOptions.APPEND, StandardOpenOptions.CREATE);
PrintWriter writer = new PrintWriter(osw)) {
while (iterator.hasNext()) {
final DataToWrite data = iterator.next();
writer.write(data.getDataName());
writer.write(coldelimiter);
...
writer.write(rowdelimiter);
writer.flush();
}
} // Automatic close, also on exception
关于java - 通过 NFS 共享挂载将数据刷新到文件时的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57819398/
我正在运行 Debian GNU/Linux 7 VM mount.nfs 版本 mount.nfs: (linux nfs-utils 1.2.6) 我想在 NFS 挂载上设置配额。 NFS 服务器
我正在尝试使用 VirtualBox 作为提供程序并使用 ansible 作为配置工具来“升级”一台 CentOS 机器 (centos7-x64-vbox43)。我执行了以下命令: vagrant
我最近使用 inotify 创建了一个保管箱系统,监视在特定目录中创建的文件。我正在监视的目录是从 NFS 服务器挂载的,并且 inotify 的行为与我的预期不同。考虑以下场景,其中 inotify
我已经在我的本地机器上安装了一个 NFS 挂载(所以,我想我的机器是 NFS 客户端)并且一个文件正在被托管 NFS 挂载的远程机器(NFS 服务器)写入 NFS 挂载中。现在,我如何使用 JAVA
我关注这个tutorial为我的服务器设置 NFS。目前,我有 1 台服务器将其部分目录共享为 HOST,2 台服务器将这些目录作为 CLIENT。 我的问题很直接,如果我的HOST包含200万张图片
我在主机上有一个 NFS 分区,如果将其添加到容器中 docker run -i -t -v /srv/nfs4/dir:/mnt ubuntu /mnt 将包含共享数据,但它不会导致冲突吗?因为它还
没有 iptables 规则,我可以挂载我的 NFSSERVER:/PATH 但有了它(firewall/iptables) 已启用,但我无法安装。 [.e.g., after iptables --
我们有两个数据中心,每个数据中心都有许多共享一个基于 EMC 的大型 nfs 的 Linux 服务器。 挑战在于保持两个 nfs 同步。目前假设写入仅发生在 nfs1 上,然后 nfs1 必须将更改传
我在尝试挂载 nfs 导出时遇到以下错误。 sudo mount 192.168.1.175:/mnt/nas /mnt/c/nas mount.nfs: No such device 关于如何解
NFS 挂载在我的 RHEL 7 AWS 实例中不起作用。 当我做一个 mount -o nfsvers=3 10.10.11.10:/ndvp2 /root/mountme2/ 我得到错误: mou
我正在复制 Controller 示例 [1] 中尝试 Kubernetes NFS 卷声明。 我已经设置了 NFS 服务器、PV 和 PVC。我的复制 Controller 看起来像这样 apiVe
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我想查找并更改用户帐户及其在本地文件系统上的默认组,但不包括大量 NFS 安装和指向这些安装的符号链接(symbolic link)。我尝试了多种语法但没有成功 - find / -user dumm
我正在使用 docker NFS 容器,但是在安装导出的目录(即使在本地主机上)时遇到了麻烦。 问题 exportfs: does not support NFS export 设置 我的容器使用入
HDFS NFS GateWay mount.nfs:输入/输出错误? 1.报错如下: [root@xx sbin]# mount -t nfs -o vers=3,proto=tcp,nolock,
我无法为 Docker Swarm 安装 NFS 卷,并且缺乏有关 --mount 语法( https://docs.docker.com/engine/reference/commandline/s
我有一个 Kubernetes 集群设置(本地),它有一个 NFS 共享(my-nfs.internal.tld)安装到 /exports/backup在每个节点上创建备份。 现在我正在设置我的日志记
我想将 sqlite 数据库嵌入到现有的 tcl 应用程序中(从平面文件迁移)。 目前;我们的 tcl 解释器是从网络位置运行的; /bin/tclsh8.3 我有一个 nfs $PATH对于已经为所
我在一台服务器上为客户端创建了一个 NFS 共享服务器和客户端都是centos 6系统。服务器 nfs 导出:/srv/diskless/tmp *(rw,sync,no_root_squash)。
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前关闭。 Improve
我是一名优秀的程序员,十分优秀!