1

我正在尝试写入文本文件。我可以写入控制台但是我无法写入我的文本文件。我注意到的一件事是,String data如果我只是打印到控制台,它不包含任何数据,这可能就是为什么我的文本文件中什么都没有出现的原因。有谁知道为什么会这样,我怎么能做到这一点?

writeFile() 方法代码:

public static void writeFile(String filename, String content) throws IOException
    {
        try
        {
            Files.write(Paths.get(filename), content.getBytes()); // write file
        } 
        catch (IOException e)
        {
            System.out.println("Error writing file: " + e);
        }
    }

测试代码:

public class QuickTest {
    public static void main(String... p) throws IOException {

        List<SensorInfo> readings = new ArrayList<>();
        SensorInfo info = null;

        String data = createStringFromInfo(readings);
        writeFile("datastore.txt", data);

        String filedata = readFile("client-temp.txt");

        List<SensorInfo> temps = createInfoFromData(filedata);

        System.out.println(header());

        for (SensorInfo reading : temps) {
            System.out.print(reading.display());

        }


    }

}

CreateFromInfo 方法:

public static String createStringFromInfo(List<SensorInfo> infoList)
    {
        String data = "";
        for (SensorInfo info : infoList)
        {
            data += info.asData();
        }
        return data;
    }

createInfoFromData

public static List<SensorInfo> createInfoFromData(String data)
    {
        List<SensorInfo> infoList = new ArrayList<>();

        String[] lines = data.split("\n");

        for (String line : lines)
        {
            SensorInfo info = new SensorInfo(line);
            infoList.add(info);
        }

        return infoList;
    }
4

1 回答 1

0

的实现createStringFromInfo()证实了我的猜测:当它的参数是一个空列表时,它将返回一个空字符串,就像你的程序中的情况一样。我同意你的观点,这就是你得到一个空文件的原因。

您可以通过使用描述要写入文件的信息的对象填充readings列表来修复它(在调用之前)。如果这些对象的数据应该来自读取文件“client-temp.txt”,那么您应该先读取它,然后将其传递给以获取要写入的数据。SensorInfocreateStringFromInfo()SensorInfo ListcreateStringFromInfo()

于 2014-12-10T20:47:53.033 回答