1

我正在编写测试代码,在该代码中我必须从用户那里获取输入,直到用户输入“停止”字,并且我必须将其写入文件。我在代码中遇到错误。

代码 :

import java.io.*;
import java.util.*;

public class fh1

{
public static void main(String args[])throws IOException

{

    FileOutputStream fout = new FileOutputStream("a.log");

    boolean status = true;
    while (status)
    {
        System.out.println("Enter the word : ");
        Scanner scan = new Scanner(System.in);
        String word = scan.next();

        System.out.println(word);

        if (word.equals("stop"))
        {
            status = false;
        }
        else
        {
            fout.write(word);
        }
    }
    fout.close();
}

}

我收到以下错误:

fh1.java:28: error: no suitable method found for write(String)
                            fout.write(word);
                                ^
method FileOutputStream.write(byte[],int,int) is not applicable
  (actual and formal argument lists differ in length)
method FileOutputStream.write(byte[]) is not applicable
  (actual argument String cannot be converted to byte[] by method invocation conversion)
method FileOutputStream.write(int) is not applicable
  (actual argument String cannot be converted to int by method invocation conversion) method FileOutputStream.write(int,boolean) is not applicable (actual and formal argument lists differ in length) 1 error

这个错误意味着什么以及如何解决它?

4

6 回答 6

3

它说方法 write 不接受 String 参数。

您需要在调用它之前将其转换为字节数组

如何在Java中将字符串转换为字节

于 2013-10-22T05:00:51.970 回答
3

你可以试试

fout.write(word.getBytes());
于 2013-10-22T05:01:01.620 回答
3

write函数需要字节数组作为第一个参数。所以你应该将你的字符串转换为字节数组。您可以使用 word.getBytes("utf-8")

于 2013-10-22T05:01:26.020 回答
3

尝试

fout.write(word.getBytes());

write(byte[] b)

public void write(byte[] b)
           throws IOException
Writes b.length bytes from the specified byte array to this file output stream.
Overrides:
write in class OutputStream
Parameters:
b - the data.
Throws:
IOException - if an I/O error occurs.
于 2013-10-22T05:01:30.090 回答
1
byte[] dataInBytes = word.getBytes();
fout.write(dataInBytes);

参考这个例子

于 2013-10-22T05:02:30.903 回答
1

处理字符(字符串)时,将 FileWriter 用于字符流。并避免手动将字符串转换为字节。

 public class Test14

{
public static void main(String args[])throws IOException

{

FileWriter fout = new FileWriter("a.log");

boolean status = true;
while (status)
{
    System.out.println("Enter the word : ");
    Scanner scan = new Scanner(System.in);
    String word = scan.next();

    System.out.println(word);

    if (word.equals("stop"))
    {
        status = false;
    }
    else
    {
        fout.write(word);
    }
}
fout.close();

}

}

它会起作用的。如果您只想写日志,请使用 java 的 logger api。

于 2013-10-22T05:03:16.517 回答