Java 我用的是ubuntu 14.04,fileinputstream有大问题吗?
我使用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/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/
你的循环完全错了。您应该阅读一些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);
}
}
}