Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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_Inputstream - Fatal编程技术网

输入流java

输入流java,java,inputstream,Java,Inputstream,由于我是Java新手,我需要一些关于Java的基本知识的帮助。 我有两个问题。它们可能非常简单(至少在C++中是如此),但我不知道如何在Java中实现它 (i) 如何将带有逗号分隔值的行拆分为单独的字符串 假设我有一个输入(文本)文件,如: zoo,name,cszoo,address,miami ...,...,...,.... 我想从文件中逐行读取输入,并获取每行逗号之间的字符串 (二)调用子类构造函数 如果我有一个叫做动物的超类和一个叫做狗和猫的子类。当我从输入中读取它们

由于我是Java新手,我需要一些关于Java的基本知识的帮助。 我有两个问题。它们可能非常简单(至少在C++中是如此),但我不知道如何在Java中实现它

(i) 如何将带有逗号分隔值的行拆分为单独的字符串

假设我有一个输入(文本)文件,如:

 zoo,name,cszoo,address,miami  

    ...,...,...,....
我想从文件中逐行读取输入,并获取每行逗号之间的字符串

(二)调用子类构造函数


如果我有一个叫做动物的超类和一个叫做狗和猫的子类。当我从输入中读取它们时,我将它们作为动物放入一个载体中。但我需要调用它们的构造函数,就像它们是狗或猫一样。如何在Java中执行此操作

将BufferedReader与文件读取器结合使用来读取文件

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// or, to read from a file, do:
// BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = br.readLine()) != null) {
    String[] a = line.split(",");

    // do whatever you want here
    // assuming the first element in your array is the class name, you can do this:
    Animal animal = Class.forName(a[0]).newInstance();

    // the problem is that that calls the zero arg constructor. But I'll 
    // leave it up to you to figure out how to find the two arg matching
    // constructor and call that instead (hint: Class.getConstructor(Class[] argTypes))
}
BufferedReader reader = new BufferedReader(new FileReader("yourfile.txt"));

for (String line = reader.readLine(); line != null; line = reader.readLine())
{
    // handle your line here:
    // split the line on comma, the split method returns an array of strings
    String[] parts = line.split(",");
}
其思想是使用缓冲读取器包装基本读取器。缓冲读取器使用一个缓冲区来加速事情。缓冲读取器实际上并不读取文件。底层文件读取器读取它,但缓冲读取器“在幕后”执行此操作

另一个更常见的代码片段是,但可能更难理解:

String line = null;
while ((line = reader.readLine()) != null)
{

}

你试过什么,怎么办?它不起作用了?显示您迄今为止尝试的代码。我无法对输入执行任何操作。事实上,别忘了将其标记为家庭作业。我应该如何实现捕获和尝试部分?此外,我在这里不理解的是,例如(zoo,12,lala)。zoo是我的类名,lala和12是属性。我将如何在您想要的任何内容中定义它。我假定您将看到的唯一例外是找不到文件,而且您对此也无能为力。您可以使用反射来实例化您的对象。并依赖构造函数提供与输入参数匹配的重载。顺便说一句,非常感谢。但它实际上是自上而下读取的。我的意思是,如果有zoo,lala,底部是bobo,ola。a[0]是zoo,bobosorry。[0]不是类名吗?很难从你的例子中知道,因为你的样本CSV中的名字不符合你的动物、狗、猫等的例子。我该如何实现捕捉和尝试的部分呢?这里我不理解的是例如(动物园,12,拉拉)。动物园是我的类名,拉拉和12是属性。