64

次のコードはファイルを生成しません (どこにもファイルが表示されません)。何が欠けている?

try {
    //create a temporary file
    String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(
        Calendar.getInstance().getTime());
    File logFile=new File(timeLog);

    BufferedWriter writer = new BufferedWriter(new FileWriter(logFile));
    writer.write (string);

    //Close writer
    writer.close();
} catch(Exception e) {
    e.printStackTrace();
}
4

8 に答える 8

17

MadProgrammer's Answer にもう少し追加したいと思います。

複数行書き込みの場合、コマンド実行時

writer.write(string);

デバッグ中に改行文字が表示された場合でも、または同じテキストが端末に出力された場合でも、書き込まれたファイルで改行文字が省略またはスキップされていることに気付く場合があります。

System.out.println("\n");

したがって、テキスト全体が 1 つの大きなテキストの塊として表示されますが、これはほとんどの場合望ましくありません。改行文字はプラットフォームに依存する可能性があるため、次を使用して Java システム プロパティからこの文字を取得することをお勧めします。

String newline = System.getProperty("line.separator");

「\n」の代わりに改行変数を使用します。これにより、必要な方法で出力が得られます。

于 2013-12-04T09:47:59.820 に答える
14

Java 7でできるようになりました

try(BufferedWriter w = ....)
{
  w.write(...);
}
catch(IOException)
{
}

そして w.close は自動的に行われます

于 2014-04-06T19:54:54.337 に答える
5

実際にファイルを作成したことがないため、ファイルを作成していません。あなたはそれのためのオブジェクトを作りました。インスタンスを作成しても、ファイルは作成されません。

File newFile = new File("directory", "fileName.txt");

これを行うと、ファイルを作成できます。

newFile.createNewFile();

これを行うと、フォルダーを作成できます。

newFile.mkdir();
于 2015-05-09T22:07:53.550 に答える
1

Java 8LocalDateTimeおよび Java 7 の try-with ステートメントを使用する場合:

public class WriteFile {

    public static void main(String[] args) {

        String timeLog = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss").format(LocalDateTime.now());
        File logFile = new File(timeLog);

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(logFile))) 
        {
            System.out.println("File was written to: "  + logFile.getCanonicalPath());
            bw.write("Hello world!");
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }
}
于 2018-12-21T22:23:12.097 に答える
0

Java ライブラリを試すことができます。FileUtils、ファイルに書き込む多くの関数があります。

于 2014-10-13T05:39:32.450 に答える