gpt4 book ai didi

java - 我在这个程序中遇到异常?

转载 作者:行者123 更新时间:2023-12-01 06:28:49 24 4
gpt4 key购买 nike

我在这个程序中遇到异常。我尝试做一些改变,但仍然不起作用。我正在尝试将数据从 demo.txt 写入 demo1.txt 但它给出 NullPointerException 。我在这里做错了什么?

import java.io.*;

class CopyFile{

public static void main(String[] args){

String str = null ;

try {
File f = new File("/home/newlabuser/workspace/CopyFileDemo/src/demo.txt");
if(f.exists())
{
if(f.canRead())
{
FileInputStream fin = new FileInputStream(f);
BufferedInputStream bin = new BufferedInputStream(fin);
DataInputStream din = new DataInputStream(bin);

while((str=din.readLine())!=null)
System.out.println(str);
writeTextFile("/home/newlabuser/workspace/CopyFileDemo/src/demo1.txt",str);
din.close();
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void writeTextFile(String fileName, String s) {
FileWriter output;
try {
output = new FileWriter("/home/newlabuser/workspace/CopyFileDemo/src/demo1.txt");
BufferedWriter writer = new BufferedWriter(output);
writer.write(s);
writer.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}

java.lang.NullPointerException

at java.io.Writer.write(Writer.java:140)

at CopyFile.writeTextFile(CopyFile.java:37)

at CopyFile.main(CopyFile.java:21)

最佳答案

不要低估大括号与循环的使用。这是您的代码:

while((str=din.readLine())!=null)
System.out.println(str);
writeTextFile("/home/newlabuser/workspace/CopyFileDemo/src/demo1.txt",str);
din.close();

这里只会循环运行System.out.println(str),循环退出后才会执行下一行,显然这里的str会为null 。因此,当您将 null 传递给 BufferedWriter 的 write() 方法时,您会得到一个 NullPointerException。将您的代码修复为:

while((str=din.readLine())!=null) {
System.out.println(str);
writeTextFile("/home/newlabuser/workspace/CopyFileDemo/src/demo1.txt",str);
}
din.close();

你应该没问题。

关于java - 我在这个程序中遇到异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16039911/

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