当前位置: 首页 > 知识库问答 >
问题:

从文件中I/O读取对象数据

元望
2023-03-14

在我的main(一个名为VehicleDriverClass的seperate类)中,我试图使用I/O将车辆数据写入文件,并从文件中读取车辆数据。我可以写一个文件罚款。我正在使用记事本和一个。txt文件来读取。我遇到的问题是,当从文件中读取时,如何终止一行的结尾。这里是Vehicle类的构造函数,所以您知道Paramaters。

public Vehicle(String man, String mod, String VIN, String dateOfMan, char taxBand, int     costOfVehicle)
{
    this.manufacturer = man;
    this.model = mod;
    this.VIN = VIN;
    this.dateOfManufacture = dateOfMan;
    this.taxBand = taxBand;
    this.costOfVehicle = costOfVehicle;
}

这就是我目前的输入法(不试图创建oject,只是从文件中读取)。传递给它的Showroom是为了以后创建vehicle对象并将其添加到Showroom时使用。

//代码在下面被替换。

Fordtest\n Focus\n frank\n ioCheck\n 09/01/1989\n 23/11/2013\n true\n d\n 1995\n
    try
    {
        File fileReader = new File("AddNewVehicleFromFile.txt");
        FileReader fr = new FileReader(fileReader);
        BufferedReader br = new BufferedReader(fr);

        while ((dataFromFile = br.readLine()) != null)
        {
            tokens = dataFromFile.split("~");
        }

        System.out.println(Arrays.toString(tokens));

        Vehicle inputVehicle = new Vehicle(tokens[0], tokens[1], tokens[2], tokens[3],
                tokens[4], tokens[5]); 
        /*
        Erorr above here with these two. token[4] should be a char and [5] an int
        */

        s.addVehicle(inputVehicle);

        System.out.println("addNewVehicleFromFile Complete");

    }
    catch (FileNotFoundException fnfe)
    {
        System.out.println("File not found exception: " + fnfe.toString());
    }
    catch (IOException ioe)
    {
        System.out.println("I/O exception: " + ioe.toString());
    }

}

共有1个答案

曹新觉
2023-03-14

我想如果你改变你的输入数据格式,你会做得更好。这就是XML和JSON诞生的原因。如果您必须保持当前的排列,请将数据元素之间的分隔符更改为类似于“~”的符号,而不是\n。

因此您的输入如下所示:

Fordtest~Focus~frank~ioCheck~09/01/1989~23/11/2013~true~d~1995

现在很容易解析:

String [] tokens = data.split("~");
public class VehicleFactory {
    private static final VehicleFactory INSTANCE= new VehicleFactory();

    private VehicleFactory() {}

    public static VehicleFactory getInstance() { return INSTANCE; }

    public static Vehicle createVehicle(String data) {
        Vehicle value = null;
        String [] tokens = data.split("~");
        if ((tokens != null) && (tokens.length > X)) {
            // Map String to int or Date here
            value = new Vehicle(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4], tokens[5]);
        }
        return value;
    }

    public static List<Vehicle> createVehicles(File f) {
        List<Vehicle> values = new ArrayList<Vehicle>();
        // implementation left for you
        return values;
    }
}
 类似资料:
  • 我在维护java为我读取文件时遇到问题。我有一本书。包含所有丹麦岛屿的txt文件,但不管我如何尝试,它都不会显示在控制台中。 这是带有main方法的类。从这里它读取文件并拆分行以将数据放入ArrayList中。 当行被拆分后,它将通过另一个类,该类将数据转换为字符串,并将其放入另一个Arraylist,该Arraylist将在控制台中打印。 我不会得到任何错误或异常,程序会一直运行,直到它认为列表

  • 问题内容: 我正在寻找一个JSON分析器,该分析器可以让我从大型JSON文件(大小为几百MB)中遍历JSON对象。我从Json.NET尝试了JsonTextReader,如下所示: 但是它在令牌之后返回令牌。 如果我需要整个对象而不是令牌,有没有更简单的方法? 问题答案: 假设您有一个与此类似的json数组: 我将为对象类型声明一个类 现在,反序列化部分 还有一个伪JsonConverter类来拦

  • 主要内容:实例,从屏幕上读取用户输入,实例,从文件上读取内容,实例Scala 进行文件写操作,直接用的都是 java中 的 I/O 类 (java.io.File): 实例 import java. io. _ object Test {     def main (args : Array [String ] ) {       val writer = new PrintWriter ( new File ( "test.txt" ) )       wri

  • 主要内容:简单模式,实例,完全模式,实例,实例Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法 简单模式在做一些简单的文件操作时较为合适。但是在进行一些高级的文件操作的时候,简单模

  • 本文向大家介绍Python文件I / O,包括了Python文件I / O的使用技巧和注意事项,需要的朋友参考一下 示例 file不再是中的内置名称3.x(open仍然有效)。 文件I / O的内部详细信息已移至标准库io模块,这也是以下内容的新主目录StringIO: 文件模式(文本还是二进制)现在确定通过读取文件产生的数据类型(以及写入所需的类型): 文本文件的编码默认为返回的。要明确指定编码

  • 本教程讲述的是 JDK 7 版本以来引入的新的 I/O 机制(也被称为 NIO.2)。 相关的包在 java.nio.file ,其中 java.nio.file.attribute 提供对文件 I/O 以及访问默认文件系统的全面支持。虽然 API 有很多类,但你只需要重点关注几个。你会看到,这个 API 是非常直观和易于使用。 什么是路径(Path)?在其他文件系统的实际是怎么样的? 文件系统是