【问题标题】:writeFile() method not workingwriteFile() 方法不起作用
【发布时间】:2014-12-10 20:26:17
【问题描述】:

我正在尝试写入文本文件。我可以写入控制台但是我无法写入我的文本文件。我注意到的一件事是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;
    }

【问题讨论】:

  • 我们需要查看createStringFromInfo() 方法来确定为什么data 不包含数据,但我的第一个猜测是因为您将一个空列表传递给该方法。
  • @JohnBollinger 请找到上面写的createStringFromInfo()方法。
  • 您创建一个新的ArrayList,然后阅读其内容。数据应该从哪里来?
  • @Tom 数据来自“client-temp.txt”
  • @rr0102 不。您在尝试写入 datastore.txt 之后 读取了该文件。

标签: java arraylist writefile


【解决方案1】:

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

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

【讨论】:

  • 是的,数据来自读取文件“client-temp.txt”。我先读过它,然后通过该列表到 createStringFromInfo() ,它似乎仍然产生一个空文本文件
  • 读取文件实际上会产生任何SensorInfo 对象吗? SensorInfo.asData() 是否产生非空 StringcreateStringFromInfo() 返回的String 是您传递给writeFile() 的那个吗?您的程序可能在这些地方之一失败。
  • 当我读入文件后打印出数组列表时,它会打印一个空数组。而且我也尝试过打印“数据”,但没有产生任何结果
  • 我不知道你说“打印出数组列表”是什么意思,但是如果你传递给createStringFromInfo()List 是空的,那么结果就是一个空的@ 987654336@。如果你将一个空的String 传递给你的writeFile() 方法,那么你会得到一个空文件。 createInfoFromData() 工作正常吗? client-temp.txt 中是否有数据可供读取?
  • 为我不清楚的解释道歉。我的意思是如果我做了 System.out.println(readings) 或 System.out.println(data) 我得到空字符串。我将附上上面的 createInfoFromData() 方法。是的,文本文件中有数据可供读取。
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2016-05-25
  • 2016-01-07
相关资源
最近更新 更多