Java 我用的是ubuntu 14.04,fileinputstream有大问题吗?

Java 我用的是ubuntu 14.04,fileinputstream有大问题吗?,java,ubuntu,bufferedreader,fileinputstream,fileoutputstream,Java,Ubuntu,Bufferedreader,Fileinputstream,Fileoutputstream,我使用Ubuntu14.04,在FileInputStream、FileOutputStream、BufferedReader和BufferWriter方面遇到问题 这是我的项目。当我试图将数据从一个文件复制到另一个文件时,出现了问题 代码: 打开txt文件时出现问题 /home/mizzz/netbeansprojects/fold2/fg2.txt打开的文件 如果继续此文件,某些无效字符会损坏此文件 您还可以选择其他字符编码,然后重试 /00/00/00/00/00/00/00/00/00/

我使用Ubuntu14.04,在FileInputStream、FileOutputStream、BufferedReader和BufferWriter方面遇到问题 这是我的项目。当我试图将数据从一个文件复制到另一个文件时,出现了问题 代码:

打开txt文件时出现问题 /home/mizzz/netbeansprojects/fold2/fg2.txt打开的文件 如果继续此文件,某些无效字符会损坏此文件 您还可以选择其他字符编码,然后重试

/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/00/


你的循环完全错了。您应该阅读一些IO教程

while ((vinput.read(buffer)) > 0);{
        voutput.write(buffer);
        vinput.close();
        voutput.close();}
应该是

int bytes = 0;
while((bytes = vinput.read(buffer)) != -1) {
    voutput.write(buffer, 0, bytes);
}
vinput.close();
voutput.close();

不,Ubuntu或其他平台上的Java文件I/O没有突出的问题

问题出在您的代码中。只需使用以下方法:

如果您坚持将所有数据读入Java代码中的字节数组中的用户空间,那么您需要正确地打开和关闭文件。看起来更像这样:

Path src = Paths.get(jttex1.getText());
Path dst = Paths.get(jttex2.getText());
try (InputStream is = Files.newInputStream(src)) {
  byte[] buffer = new byte[8192];
  try (OutputStream os = Files.newOutputStream(dst)) {
    while (true) {
      int n = is.read(buffer);
      if (n < 0)
        break;
      os.write(buffer, 0, n);
    }
  }
}

你的文件充满了空值。你也没有指定你从哪里读到它。这段代码太奇怪了,我甚至不能。我问这个问题是来自我的代码还是我的ubuntu?不,那段代码完全错了。现在去读那些教程吧。这是一个非常基本和众所周知的模式。如果你想继续编程,你需要学习它。
Path src = Paths.get(jttex1.getText());
Path dst = Paths.get(jttex2.getText());
jsizee.setText("size: " + Files.size(src));
Files.copy(src, dst);
Path src = Paths.get(jttex1.getText());
Path dst = Paths.get(jttex2.getText());
try (InputStream is = Files.newInputStream(src)) {
  byte[] buffer = new byte[8192];
  try (OutputStream os = Files.newOutputStream(dst)) {
    while (true) {
      int n = is.read(buffer);
      if (n < 0)
        break;
      os.write(buffer, 0, n);
    }
  }
}