标签: bufferedwriter

如何格式化写入文本文件的数据在列中完成?

嗨我有一堆数据我正在写入文本文件,每行的行包含大约4个不同的数据,我想这样做,以便每个类型的数据在行中对齐.

这是写入数据的行.

output.write(aName + "    "  + aObjRef + "    "  + aValue + "    "  + strDate + "    " + note  + (System.getProperty("line.separator")));
Run Code Online (Sandbox Code Playgroud)

以下是现在编写时数据的外观.

CR_2900_IPGR_AL    2900.EV2    Alarm    111107    
CR_2900_IMPT_AL    2900.EV311    Alarm    111107    
CR_STH_CHL_AL    2900.EV315    Alarm    111107    
CR_OAT_AL    2900.EV318    Alarm    111107    
SLB_102_2270A Temp Event    60215.EV1    Fault    111107    
MACF_70300_IMPT_AL    70300.EV2    Alarm    111107 
Run Code Online (Sandbox Code Playgroud)

以下是我喜欢它的样子

CR_2900_IPGR_AL             2900.EV2        Alarm      111107    
CR_2900_IMPT_AL             2900.EV311      Alarm      111107    
CR_STH_CHL_AL               2900.EV315      Alarm      111107    
CR_OAT_AL                   2900.EV318      Alarm      111107    
SLB_102_2270A Temp Event    60215.EV1       Fault      111107    
MACF_70300_IMPT_AL          70300.EV2       Alarm      111107 
Run Code Online (Sandbox Code Playgroud)

java text-files bufferedwriter

6
推荐指数
1
解决办法
2万
查看次数

如何在Python中使用BufferedWriter?

我面临以下问题:我正在尝试为供应链实施模拟器.这些将产生许多EPCIS事件(在RFID阅读器上发生的事件).然后应将这些事件写入csv文件,以便将它们加载到任何数据库中并对它们运行分析算法.

模拟器是使用python实现的,工作正常.我现在要做的是缓冲将事件写入文件,以减少访问磁盘所需的时间.浏览python文档我偶然发现了io.BufferedWriter,听起来和我正在寻找的东西完全一样.无论如何,我无法让它发挥作用.

这是我到目前为止所做的.我实现了我的CsvWriter类,它继承自RawIOBase并管理文件句柄.当它被实例化时,它将创建一个BufferedWriter自己交换的raw参数(可能已经是一个问题吗?)

class CsvWriter(AbstractWriter):

    def __init__(self, filename):    
        self.filename = filename
        self.file = self.openFile()
        self.buffer = BufferedWriter(self, settings.WRITE_THRESHOLD)
Run Code Online (Sandbox Code Playgroud)

当我知道想要写一些我称之为write_buffered缓冲的东西时,看起来像这样:

def write_buffered(self, data_dict):    
        self.buffer.write(b';'.join(map(str, data_dict.values())) + '\n')
Run Code Online (Sandbox Code Playgroud)

write(正如我所说)需要在CsvWriter类本身上实现的实际方法如下所示:

def write(self, data):
        if self.file.closed:
            self.file = self.openFile()

        return self.file.write(data)
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试运行模拟器时,我收到以下错误:

IOError: raw write() returned invalid length -1 (should have been between 0 and 78)
Run Code Online (Sandbox Code Playgroud)

你们中的任何人都知道如何解决这个问题吗?

python buffer file bufferedwriter

6
推荐指数
0
解决办法
5492
查看次数

如何将数组写入Java文件

我一直在尝试将数组写入文件.我知道如何将整数或字符串写入文件但是让数组混淆了我.我现在正在使用它:

public static void write (String file, int[]x) throws IOException{
    BufferedWriter outputWriter = null;
    outputWriter = new BufferedWriter(new FileWriter(filename));
    outputWriter.write("hi");// Here I know i cant just write x[0] or anything. Do i need 
                             //to loop in order to write the array?
    outputWriter.newLine();
    outputWriter.flush();  
    outputWriter.close();  



}
Run Code Online (Sandbox Code Playgroud)

java arrays loops file bufferedwriter

6
推荐指数
2
解决办法
9万
查看次数

DataOutputStream#writeBytes(String)vs BufferedWriter #write(String)

我想为我的报告创建一个HTML文件.可以使用创建报告中的内容BufferedWriter#write(String)

File f = new File("source.htm");
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write("Content");
Run Code Online (Sandbox Code Playgroud)

或者通过使用 DataOutputStream#writeBytes(String)

File f = new File("source.htm");
DataOutputStream dosReport = new DataOutputStream(new FileOutputStream(f)); 
dosReport.wrtiteBytes("Content");
Run Code Online (Sandbox Code Playgroud)

其中一个比另一个好吗?为什么会这样?

java string dataoutputstream bufferedwriter java-io

6
推荐指数
1
解决办法
7156
查看次数

使用多个线程编写文件

我试图使用多个线程在Java中编写一个巨大的文件.

我在Java中尝试了两个FileWriterbufferedWriter类.

正在写入的内容实际上是使用CopyManager和写入的整个表(Postgres).文件中的每一行都是表格中的一个元组,我一次写入100行.

写作方法:

在追加模式下,多个线程打开单个待写文件.之后每个线程都尝试写入文件文件.

以下是我面临的问题:

  • 有一段时间,文件的内容会被覆盖,即:一行保持不完整,下一行从那里开始.我的假设是,编写器的缓冲区已经满了.这会强制编写器立即将数据写入文件.写入的数据可能不是一个完整的行,在它可以写入余数之前,下一个线程将其内容写入文件.
  • 使用时Filewriter,我会在文件中看到一条黑线.

有什么建议,如何避免这种数据完整性问题?

java postgresql file-io multithreading bufferedwriter

6
推荐指数
1
解决办法
1万
查看次数

PrintWriter是缓冲的吗?

我知道PrintWriter如果我们想要编写格式化数据,那真的很好,而且我也知道使用它BufferedWriter来提高IO性能.

但我试过这样的事,

PrintWriter pw = new PrintWriter(System.out);
pw.println("Statement 1");
pw.println("Statement 2");
//pw.flush();
Run Code Online (Sandbox Code Playgroud)

我观察到当注释flush方法时没有输出,但是当我取消注释它时,我得到了所需的输出.

只有在PrintWriter被缓冲时才可以这样做.如果是这样,那么使用BufferedWriter包装PrintWriter然后编写它有什么意义呢?

虽然javadoc没有提到PrintWriter被缓冲的任何地方,但似乎如此.

java file-io bufferedwriter printwriter java-io

6
推荐指数
2
解决办法
4275
查看次数

我是否需要使用BufferedWriter和FileWriter实现将数据写入同一文件的同步?

我正在研究Webmethods Integration Server.里面有一个java服务,它是一个静态java方法,用于通过使用BufferedWriter和FileWriter将数据写入日志文件(server.log).静态方法代码是这样的:

public static void writeLogFile(String message) throws ServiceException{
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter("./logs/server.log", true));
        bw.write(message);
        bw.newLine();
        bw.close();
    } catch (Exception e) {
        throw new ServiceException(e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:
- 代码已经过简化,仅用于示例目的.
-I无法更改writeLogFile方法声明和属性.这意味着,它将永远是:public static void writeLogFile.禁止这种修改:public synchronized void writeLogFile.

writeLogFile方法有可能被不同的实例调用,因此我需要确保没有两个或更多实例同时访问相同的资源(server.log).这意味着,如果有两个实例尝试访问server.log,则其中一个实例必须等待另一个实例才能完成将数据写入server.log.

问题是:我应该更改上面的代码吗?如果是这样,我需要做哪种修改?我应该在java静态方法中实现"synchronized"吗?

@EJP:
那么,下面哪一个是实现同步的最佳代码?

1)

        FileWriter fw = new FileWriter("./logs/server.log", true);
        synchronized (fw) {
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(message);
            bw.newLine();
            bw.close();
        }
Run Code Online (Sandbox Code Playgroud)

2)

        BufferedWriter bw = new BufferedWriter(new FileWriter("./logs/server.log", true));
        synchronized(bw) {
            bw.write(message);
            bw.newLine();
            bw.close();
        }
Run Code Online (Sandbox Code Playgroud)

3) …

java static synchronized filewriter bufferedwriter

5
推荐指数
1
解决办法
8091
查看次数

使用Java中的BufferedWriter写入文件

我正在做一个实验室,我们必须读取外部文件,对数据进行一些统计,然后使用统计信息创建和写入新文件.我的程序中的所有内容都可以工作,除了编写文件,我无法理解为什么我的方法不起作用.

BufferedWriter writer;

public void writeStats(int word, int numSent, int shortest, int longest, int average)
{
    try
    {
        File file = new File("jefferson_stats.txt");
        file.createNewFile();

        writer = new BufferedWriter(new FileWriter(file));

        writer.write("Number of words: " + word );
        writer.newLine();
        writer.write("Number of sentences: " + numSent );
        writer.newLine();
        writer.write("Shortest sentence: " + shortest + " words");
        writer.newLine();
        writer.write("Longest sentence: " + longest + " words");
        writer.newLine();
        writer.write("Average sentence: " + average + " words");    
    }
    catch(FileNotFoundException e)
    {
        System.out.println("File Not Found");
        System.exit( 1 …
Run Code Online (Sandbox Code Playgroud)

java eclipse file-io filewriter bufferedwriter

5
推荐指数
1
解决办法
5万
查看次数

将格式化的字符串写入文件-Java

我有一个用该System.out.format()方法格式化的字符串,我做了类似的事情:

System.out.format("I = %3d  var = %9.6f", i, myVar);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将此格式化的字符串写入文件时,只能得到类似"java.io.PrintStream@84fc8d"的信息。

在查看文档后,了解到此方法有点像System.out.print(),只是返回一个PrintStream进行显示(例如在控制台中),因此我尝试使用.toStringor 对其进行转换,String.valueOf()但得到相同的结果。

所以我想知道是否有一种方法可以像String.out.format()方法一样格式化字符串,但是可以在文件中写入?

这大约是我使用的代码(只是使有用的部分出现)

WRITE_MY_LINE(System.out.format(" I = %3d  var = %9.6f", i, myVar).toString());
//also tried this :
WRITE_MY_LINE(String.valueOf(System.out.format(" I = %3d  var = %9.6f", i, myVar)));

public static void WRITE_MY_LINE(String line) {
        buff_out = new BufferedWriter(new FileWriter(ascii_path, true));

        buff_out.append(line);
        buff_out.newLine();
        buff_out.flush();
}
Run Code Online (Sandbox Code Playgroud)

java string format bufferedwriter printstream

5
推荐指数
1
解决办法
423
查看次数

在java中同时读取和写入同一个文件

如何在不先关闭 BufferedWriter 的情况下访问文件中的数据?

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class Tp {
    public static void main(String[] args) throws IOException{
        File f = new File("Store.txt");
        BufferedWriter bw = new BufferedWriter(new FileWriter(f));
        BufferedReader br = new BufferedReader(new  FileReader(f));
        bw.write("Some text");
        System.out.println(br.readLine());
        bw.write("Some more text");
        bw.close();
        br.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

控制台显示为空。我该如何解决?

java file-io bufferedwriter bufferedreader

5
推荐指数
1
解决办法
5740
查看次数