Java SSD损坏是否可以更改txt文件中的字符?

Java SSD损坏是否可以更改txt文件中的字符?,java,filesystems,ntfs,corruption,solid-state-drive,Java,Filesystems,Ntfs,Corruption,Solid State Drive,我有一个java应用程序,它可以读取一堆文本文件(大约50gbs)。每个文件的大小从5kb到35mb不等。这些文件本身是从另一个java应用程序创建的,该应用程序是按需运行的,但大约一周内还没有运行。该文件使用了许多分隔符,如 |, 我的应用程序一直运行良好,但最近开始抛出一个数字格式异常错误。经检查,我发现其中一个逗号被翻转为a$ 0.4391622970.43081,6.76182$527640691.38786,| 10 我的问题是。这种“翻转”是否可能是因为驱动器损坏而发生的?整个文件

我有一个java应用程序,它可以读取一堆文本文件(大约50gbs)。每个文件的大小从5kb到35mb不等。这些文件本身是从另一个java应用程序创建的,该应用程序是按需运行的,但大约一周内还没有运行。该文件使用了许多分隔符,如

|,

我的应用程序一直运行良好,但最近开始抛出一个数字格式异常错误。经检查,我发现其中一个逗号被翻转为a$

0.4391622970.43081,6.76182$527640691.38786,| 10

我的问题是。这种“翻转”是否可能是因为驱动器损坏而发生的?整个文件中只有1个字符会更改,这似乎有点牵强。文件上的时间戳验证文件是否被其他程序“意外”修改


这件事我真是摸不着头脑。

这不太可能,但绝对有可能。事实上,在a(00100)和a$(00101100)之间只需更改一位。磁盘通常内置校验和和和纠错码,这样,如果确实发生损坏,它们就能够纠正它,或者至少让您知道它已经发生。但尽管如此,无声腐败并非闻所未闻,与传统硬盘驱动器相比,SSD更有可能发生这种情况


不过,首先要看的肯定是生成该文件的代码。

证明是驱动器损坏。运行CHKDISK并出现错误

更可能的情况是,生成文件的应用程序中有一个bug,导致将无效值写入文件,特别是因为它是一个被更改的单个字符。驱动器损坏很可能会影响更多的数据。(这实际上也不是一个编程问题;更多的是一个操作系统/硬件问题。这里不是真正的主题。)由硬件或编译器错误(或宇宙射线的位翻转)引起的错误很少发生,因此几乎不应该将问题归咎于它们。我已经开发企业型Java代码超过10年了,从来没有发现过这些问题中的任何一个是bug的根本原因(抛开XML处理器问题:-))。再说一次,这是金属而不是硅的旋转。我认为这是极不可能的,尤其是以一种可预测的、常规的方式。