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

在Java中读取文件和写入文件时出现问题

在Java中读取文件和写入文件时出现问题,java,csv,arraylist,java.util.scanner,Java,Csv,Arraylist,Java.util.scanner,我在尝试从Java文件中读取数据,然后将其写入csv文件时遇到问题。我设置了一个ArrayList变量“data”,使用扫描仪读取数据文件中的行。当读取数据并将其打印在这一行时,就会出现问题:System.out.printlnline 结果是这样的: [Tim] [Tim] [March] [Tim] [March] [11751 N River Dr] [Tim] [March] [11751 N River Dr] [Apt 4] [Tim] [March] [11751 N River

我在尝试从Java文件中读取数据,然后将其写入csv文件时遇到问题。我设置了一个ArrayList变量“data”,使用扫描仪读取数据文件中的行。当读取数据并将其打印在这一行时,就会出现问题:System.out.printlnline

结果是这样的:

[Tim]
[Tim]
[March]
[Tim]
[March]
[11751 N River Dr]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[MN]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[MN]
[56001]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[MN]
[56001]
当文件看起来像这样时:

[Tim]
[Tim]
[March]
[Tim]
[March]
[11751 N River Dr]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[MN]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[MN]
[56001]
[Tim]
[March]
[11751 N River Dr]
[Apt 4]
[Mankato]
[MN]
[56001]
是否有一个原因,它打印的行有点不稳定?我是否需要在某个地方包含一个循环,以便只打印一次主线?我的第二个问题是,当我尝试将文件作为CSV文件写入时,我遇到了一个问题,即它只打印最后一行56001,而不打印任何其他行。我做这件事有没有遗漏什么?这是我到目前为止掌握的代码

import java.util.*;
import java.io.*;
public class ReadFromDat {

/**
 * @param <Data>
 * @param args
 */
  public static ArrayList<String> data;
  public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    @SuppressWarnings("resource")
    Scanner sc = new Scanner(new File("C:\\Users\\Tim\\Desktop\\data.dat"));
    data= new ArrayList<String>();
    List<String> line = null;
    while (sc.hasNextLine()){
        data.add(sc.nextLine());
        for (String lines: data) {
            line = new ArrayList<String>(Arrays.asList(lines.split("\n")));
            System.out.println(line);
        }
        //line = Arrays.asList(data.split("\n"));
        //System.out.println(data);
        FileWriter output = new FileWriter("C:\\Users\\Tim\\Desktop\\data.csv");
        for (String data: line) {
            output.write(data);
        }
        output.close();

    }

  }

}

在循环的每次迭代中,您都将重新打开输出文件。FileWriter默认覆盖,这就是为什么输出文件中只有一行

您需要将FileWriter移出循环