找不到合适的写入方法(String)

时间:2013-10-22 04:56:56

标签: java

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

代码:

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

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

6 个答案:

答案 0 :(得分:3)

它说方法write不带String参数。

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

How to convert string to byte in Java

答案 1 :(得分:3)

你可以尝试

fout.write(word.getBytes());

答案 2 :(得分:3)

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

答案 3 :(得分: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.

答案 4 :(得分:1)

byte[] dataInBytes = word.getBytes();
fout.write(dataInBytes);

请参阅此example

答案 5 :(得分:1)

在处理字符(String)时,将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。