Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,如何动态编写文件_Java - Fatal编程技术网

Java,如何动态编写文件

Java,如何动态编写文件,java,Java,目前,在我的应用程序中,我将一组数据存储在内存中,最后通过ArrayList将数据转储到文件指针中,将其写入文件。我如何在运行中写入数据,但我不希望它存储在某些文件指针内存中。我希望在应用程序运行时将其写入磁盘。试图将内存成本保持在最低限度。如果有必要回答的话,我也可以做一个关于文件指针在Java中如何工作的简短讲座 谢谢。我不确定我是否理解您的问题,但一般来说,这就是“动态”将数据写入磁盘的方式 打开输出文件 生成数据时,将行或缓冲区写入输出文件 关闭输出文件 编辑以回答评论中的问题 我希

目前,在我的应用程序中,我将一组数据存储在内存中,最后通过
ArrayList
将数据转储到文件指针中,将其写入文件。我如何在运行中写入数据,但我不希望它存储在某些文件指针内存中。我希望在应用程序运行时将其写入磁盘。试图将内存成本保持在最低限度。如果有必要回答的话,我也可以做一个关于文件指针在Java中如何工作的简短讲座


谢谢。

我不确定我是否理解您的问题,但一般来说,这就是“动态”将数据写入磁盘的方式

  • 打开输出文件
  • 生成数据时,将行或缓冲区写入输出文件
  • 关闭输出文件
编辑以回答评论中的问题

<>我希望数据在应用程序运行时流到磁盘,如果应用程序在执行过程中崩溃,数据本身不会丢失。 如果应用程序崩溃,您可能会丢失最后一行或缓冲区。使用finally方法确保关闭输出文件,即使应用程序崩溃

你能提供一个快速的代码示例吗

当然


我不确定我是否理解您的问题,但一般来说,这就是如何“动态”将数据写入磁盘

  • 打开输出文件
  • 生成数据时,将行或缓冲区写入输出文件
  • 关闭输出文件
编辑以回答评论中的问题

<>我希望数据在应用程序运行时流到磁盘,如果应用程序在执行过程中崩溃,数据本身不会丢失。 如果应用程序崩溃,您可能会丢失最后一行或缓冲区。使用finally方法确保关闭输出文件,即使应用程序崩溃

你能提供一个快速的代码示例吗

当然


你要找的可能是一个

您可以使用
force()
方法强制将写入的数据实际刷新到磁盘上

下面是一个用法示例:

RandomAccessFile file = null;

try {
    file = new RandomAccessFile("/home/user/mytempfile", "rw");
    FileChannel channel = file.getChannel();

    for (int i = 0; i < 100; i++) {
        file.writeUTF("Hello");
        channel.force(true);
    }
} finally {
    if (file != null) {
        file.close();
    }
}
RandomAccessFile文件=null;
试一试{
file=newrandomAccessFile(“/home/user/mytempfile”,“rw”);
FileChannel=file.getChannel();
对于(int i=0;i<100;i++){
file.writeUTF(“你好”);
通道力(真);
}
}最后{
如果(文件!=null){
file.close();
}
}

您正在寻找的可能是一个

您可以使用
force()
方法强制将写入的数据实际刷新到磁盘上

下面是一个用法示例:

RandomAccessFile file = null;

try {
    file = new RandomAccessFile("/home/user/mytempfile", "rw");
    FileChannel channel = file.getChannel();

    for (int i = 0; i < 100; i++) {
        file.writeUTF("Hello");
        channel.force(true);
    }
} finally {
    if (file != null) {
        file.close();
    }
}
RandomAccessFile文件=null;
试一试{
file=newrandomAccessFile(“/home/user/mytempfile”,“rw”);
FileChannel=file.getChannel();
对于(int i=0;i<100;i++){
file.writeUTF(“你好”);
通道力(真);
}
}最后{
如果(文件!=null){
file.close();
}
}

您可以尝试使用

java.io.FileStream和 java.io.BufferedWriter

图书馆

下面是一个快速设置,您可以开始使用它们:

import java.io.*;

FileWriter fstream = new FileWriter("C:\\junkdirectory\\textdump.txt");
BufferedWriter out = new BufferedWriter(fstream);

out.write("This is a test!!");
out.close();

您可能想尝试使用

java.io.FileStream和 java.io.BufferedWriter

图书馆

下面是一个快速设置,您可以开始使用它们:

import java.io.*;

FileWriter fstream = new FileWriter("C:\\junkdirectory\\textdump.txt");
BufferedWriter out = new BufferedWriter(fstream);

out.write("This is a test!!");
out.close();

可以使用以下代码将ArrayList转储到文件:

施工ro应用程序开始时间:

final ObjectOutputStream fos = new ObjectOutputStream(
                                   new FileOutputStream("data.dump", true));
try {
    fos.writeObject(list); // write your list to file
    fos.flush();
} catch (IOException e) {
    e.printStackTrace();
}
fos.close(); // surround with try-catch block
将数据写入文件时:

final ObjectOutputStream fos = new ObjectOutputStream(
                                   new FileOutputStream("data.dump", true));
try {
    fos.writeObject(list); // write your list to file
    fos.flush();
} catch (IOException e) {
    e.printStackTrace();
}
fos.close(); // surround with try-catch block
当您不再需要文件时(最后):

final ObjectOutputStream fos = new ObjectOutputStream(
                                   new FileOutputStream("data.dump", true));
try {
    fos.writeObject(list); // write your list to file
    fos.flush();
} catch (IOException e) {
    e.printStackTrace();
}
fos.close(); // surround with try-catch block

可以使用以下代码将ArrayList转储到文件:

施工ro应用程序开始时间:

final ObjectOutputStream fos = new ObjectOutputStream(
                                   new FileOutputStream("data.dump", true));
try {
    fos.writeObject(list); // write your list to file
    fos.flush();
} catch (IOException e) {
    e.printStackTrace();
}
fos.close(); // surround with try-catch block
将数据写入文件时:

final ObjectOutputStream fos = new ObjectOutputStream(
                                   new FileOutputStream("data.dump", true));
try {
    fos.writeObject(list); // write your list to file
    fos.flush();
} catch (IOException e) {
    e.printStackTrace();
}
fos.close(); // surround with try-catch block
当您不再需要文件时(最后):

final ObjectOutputStream fos = new ObjectOutputStream(
                                   new FileOutputStream("data.dump", true));
try {
    fos.writeObject(list); // write your list to file
    fos.flush();
} catch (IOException e) {
    e.printStackTrace();
}
fos.close(); // surround with try-catch block

所以到目前为止,在代码方面,您是如何实现这一点的?正如我提到的,将一组对象存储在
ArrayList
中,然后在最后使用for-each循环将数据写入文件。“我希望在应用程序运行时将其写入磁盘”-那么您的方法是什么?有什么问题吗?您是否考虑过在应用程序和内存存储之间添加一层抽象层?这将允许您插入一个异步模块,该模块将数据块写入文件,在关闭时刷新所有内容只需写入
OutputStream
flush()
并清空列表。因此。。。到目前为止,在代码方面,您是如何实现这一点的?正如我提到的,将一组对象存储在
ArrayList
中,然后在最后使用for-each循环将数据写入文件。“我希望在应用程序运行时将其写入磁盘”-那么您的方法是什么?有什么问题吗?您是否考虑过在应用程序和内存存储之间添加一层抽象层?这将让你在一个异步模块中写入数据块,刷新C++上的所有内容,只需写入你的代码> OuttSuffs,<代码> FLUSEH()/代码>它,并清空列表。我知道,当你在C或C++编程时,文件实际上并没有出现给用户,直到<代码> FP.Couter();代码>被调用。我在Java中想要了解的是,这是相同的吗?我希望数据在应用程序运行时流到磁盘,并且如果应用程序在执行过程中崩溃,数据本身不会丢失。你能提供一个快速的代码示例吗?或者它只是标准的
write()
方法吗?完美,正是我想要的。谢谢我知道,当你在C或C++编程时,文件实际上并没有出现在用户之前,直到<代码> FP.Couter();<代码>被调用。我在Java中想要了解的是,这是相同的吗?我希望数据在应用程序运行时流到磁盘,并且如果应用程序在中间崩溃,数据本身不会丢失。