如何编写Java文本文件

时间:2013-04-02 01:13:07

标签: java file file-io

以下代码不会生成文件(我无法在任何地方看到该文件)。 缺少什么?

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();
}

8 个答案:

答案 0 :(得分:117)

我认为你的期望和现实并不匹配(但是他们什么时候有过);)

基本上,你认为写文件的位置和文件实际写入的位置不相等(嗯,也许我应该写一个if语句;)

public class TestWriteFile {

    public static void main(String[] args) {
        BufferedWriter writer = null;
        try {
            //create a temporary file
            String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
            File logFile = new File(timeLog);

            // This will output the full path where the file will be written to...
            System.out.println(logFile.getCanonicalPath());

            writer = new BufferedWriter(new FileWriter(logFile));
            writer.write("Hello world!");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // Close the writer regardless of what happens...
                writer.close();
            } catch (Exception e) {
            }
        }
    }
}

另请注意,您的示例将覆盖任何现有文件。如果要将文本附加到文件,则应执行以下操作:

writer = new BufferedWriter(new FileWriter(logFile, true));

答案 1 :(得分:16)

我想向MadProgrammer的答案添加更多内容。

在多行写入的情况下,执行命令时

writer.write(string);

可能会注意到在写入文件中省略或跳过换行符,即使它们在调试过程中出现,或者同一文本打印到终端上,

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

因此,整个文本作为一大块文本出现,在大多数情况下是不可取的。 换行符可以依赖于平台,因此最好使用

从java系统属性中获取此字符
String newline = System.getProperty("line.separator");

然后使用换行变量而不是“\ n”。这将以您希望的方式获得输出。

答案 2 :(得分:14)

在java 7中现在可以做到

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

和w.close将自动完成

答案 3 :(得分:4)

它没有创建文件,因为您从未真正创建过该文件。你为它做了一个对象。创建实例不会创建文件。

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

您可以这样做来制作文件:

newFile.createNewFile();

您可以这样做一个文件夹:

newFile.mkdir();

答案 4 :(得分:0)

您可以尝试Java库。 FileUtils,它有许多写入文件的函数。

答案 5 :(得分:0)

它确实适用于我。确保在timeLog旁边添加“.txt”。我在一个用Netbeans打开的简单程序中使用它,它将程序写入主文件夹(构建器和src文件夹所在的位置)。

答案 6 :(得分:0)

使用Java 8 $(window).on('load', function (){ $('#request-info').modal('show') }) 和Java 7 try-with语句:

LocalDateTime

答案 7 :(得分:0)

对我来说最简单的方法就像:

            try {
                FileWriter writer = new FileWriter("C:/Your/Absolute/Path/YourFile.txt");
                writer.write("Wow, this is so easy!");
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

有用的提示和技巧:

  • 给定一条路径:

    新FileWriter(“ C:/Your/Absolute/Path/YourFile.txt”);

  • 换行

    writer.write(“ \ r \ n”);

  • 将行添加到现有txt

    新FileWriter(“ log.txt”);

希望它能起作用!