0

別のハードリンクを含む 1 つのファイルがあります。別のハードリンクのコンテンツを変更せずに、Java の最初のファイルを変更する方法は?

この動作は、Windows の gVim に似ています。

C:\Users\atry\break-hard-link>echo Hello, World > file1

C:\Users\atry\break-hard-link>mklink /H file2 file1
为 file2 <<===>> file1 创建了硬链接

C:\Users\atry\break-hard-link>gvim file1 :: Change file1 in gVim

C:\Users\atry\break-hard-link>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 B2F2-1B6E

 C:\Users\atry\break-hard-link 的目录

2012-11-04  11:33    <DIR>          .
2012-11-04  11:33    <DIR>          ..
2012-11-04  11:33                 8 file1
2012-11-04  11:32                15 file2
               2 个文件             23 字节
               2 个目录 365,748,248,576 可用字节

file1のサイズとfile2のサイズが異なることに注意してください。

new java.io.FileOutputStreamとを試しましたが、両方の方法でとjava.nio.file.Files.newOutputStreamの両方が変更されました。file1file2

gVim がどのように機能するかを知りたいのですが、Java アプリケーションで同じ動作を適用します。

4

1 に答える 1

1

gVim がどのようにそれを行うのかはわかりませんが、これを行うための信頼できる方法は

  1. 古いファイルの名前を変更します (これにより、選択したリンクのみが名前変更されます)
  2. データを古い名前の新しいファイルにコピーします
  3. 新しいファイルが作成され、正常に閉じられたことを確認したら、古いファイルを削除します

新しい i ノード (リンクを解除するために必要なもの) を取得する唯一の方法は、データの新しいコピーを作成することです。

于 2012-11-04T04:21:11.423 に答える