gpt4 book ai didi

java - DataOutputStream.write(int b) 不写入

转载 作者:行者123 更新时间:2023-12-01 13:38:42 25 4
gpt4 key购买 nike

我正在 eclipse 中编写一个 java 程序,它接受一个文件作为输入,并按照一定的逻辑编写一个新文件作为输出。

我使用 datainputstream 作为输入文件,使用 dataoutputstream 作为输出文件。我将它们用于 readln() 方法,效果很好。

现在我的 write() 方法有问题,它没有写任何东西!我还尝试过使用 randomAccess 作为输入,和/或使用 bufferedoutputstream 作为输出。

我在一个单独的java项目中尝试过:

public static void main (String[] args){

File output = new File("MyOutputDirectoryHere");

try{
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream (output)));
for(int i=0; i<1000; i++){
dos.write(i);
}
dos.close();
}
catch (IOException e){
System.err.println(e);
}
}

而且效果很好

但是在这个困惑之中:

import java.io.*;
import javax.swing.*;

public class apri_file {
@SuppressWarnings("deprecation")
public static void main(String[] args){
File inputFile = null;
File outputFile = null;
String dati;
int dato;

try {
JFileChooser FileWindow = new JFileChooser();
FileWindow.isDirectorySelectionEnabled();

FileWindow.setApproveButtonText("Open IPL File");
if(FileWindow.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
inputFile = FileWindow.getSelectedFile();
System.out.println("input path: " + inputFile.getAbsolutePath());
}

DataInputStream in = new DataInputStream( new BufferedInputStream( new FileInputStream(inputFile)));
System.out.println("input buffer reader created");
/**************************/

FileWindow.setApproveButtonText("Save PLY FIle");
if(FileWindow.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){
outputFile = new File (FileWindow.getSelectedFile(),"");
System.out.println("output path: " + outputFile.getAbsolutePath());
}

DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream (outputFile)));
/**************************/

/*
* to do write header
*/
for(int i=0;i<inputFile.length();i++){
dati = in.readLine();
if(dati == null){
break;
}
if(dati == "vnod"){
while(in.read() != 0X65){
dato = in.read();
if(dato == 0X09 || dato == 0X0D || dato == 0X2C){ }
else if(dato == 0X2E) out.write(0X2C);
else out.write(dato);
}
}
if(dati == "link"){
int virgola = 0;
dato = in.read();
while(dato != 0X65){
if(virgola < 4){
if(dato == 0X2C) virgola++;
if(dato == 0X09 || dato == 0X0D){}
else out.write(dato);
}
else{
while(dato != 0X0D) {
dato = in.read();
}
virgola = 0;
out.write(0X0D);//nl
out.write(0X34);//4
out.write(0X20);//space
}
dato = in.read();

}//while link
end = true;
}//if link
}//while file

//testing the write() method
for(int i=0; i<1000; i++){
out.write(0X2C); //tricky part! this output will be always written!! WTF!
}
in.close();
out.close();

JOptionPane.showMessageDialog(null, "Done!", "Done!" , JOptionPane.INFORMATION_MESSAGE);
}
catch (IOException e){
System.out.println(e + "\n");
}
}
}

在上面的代码中,write(int b) 方法不会在桌面上的输出文件中写入任何内容,除了最后编码的 for 循环...这部分代码运行良好...

我不知道该怎么办。请帮忙。

最佳答案

在java中,不能使用==来比较字符串。您必须使用equals()

if (dati.equals("vnod")) ...

== 只是比较引用(如指针)的相等性,而不是比较其引用的内容。

另请参阅here .

关于java - DataOutputStream.write(int b) 不写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com