Множественная перезапись с использованием FileWriter в Java

Я пытаюсь прочитать N разных файлов CSV, содержащих данные о ценах на акции. Я хочу извлечь один конкретный столбец из каждого файла и продемонстрировать эти столбцы в одном файле CSV.

Проблема в том, что комбинированный файл содержит только записанные данные из первого файла, который я даю в качестве входных данных, то есть эти данные не перезаписываются в итерации моего цикла.

Кто-нибудь может помочь? Или предложить новый метод?

            public static void main(String[] args) throws IOException
        {

    int filecount=0;
    System.out.println("Enter Number of Files");
    Scanner stream =new Scanner(new InputStreamReader(System.in));
     filecount= Integer.parseInt(stream.next());

    File file2 = new File("Combined_Sym.csv");
    FileWriter fwriter= new FileWriter("Combined_Sym.csv",true);
    PrintWriter outputFile= new PrintWriter(fwriter);
    int i;
    for(i=0;i<filecount;i++)
    {
    System.out.println("Enter File name "+i);
    String fileName =stream.next();
    File file = new File(fileName);

    Scanner inputStream = new Scanner(file);
    Scanner inputStream2= new Scanner(file2);

    if(!inputStream2.hasNext()){
    outputFile.println(fileName);
    }
    else
    {       String header=inputStream2.next();
    System.out.println(header+","+fileName);
        outputFile.println(header+","+fileName);
    }

    while(inputStream.hasNext())
    {
    String data= inputStream.next();
    String[] values = new String[8];
    values = data.split(",");
    String sym=values[7];

    if(!inputStream2.hasNext())
    outputFile.println(sym);
    else
    {
        String data2= inputStream2.next();
    outputFile.println(data2+","+sym);
    System.out.println(data2+","+sym);
    }

    }

    inputStream.close();
    inputStream2.close();
    outputFile.close();

    }

}

}


person Arpan Das    schedule 18.05.2014    source источник


Ответы (1)


Можете ли вы попробовать изменить:

for(i=0;i<filecount;i++)
{
System.out.println("Enter File name "+i);
String fileName =stream.next();
File file = new File(fileName);

to

File file;
for(i=0;i<filecount;i++)
{
System.out.println("Enter File name "+i);
String fileName =stream.next();
file = new File(fileName);
person mbsingh    schedule 18.05.2014
comment
Нет, это не сработает. Проблема с FileWriter. Так как я создал файл Combined_Sym.csv в коде JAVA, чтобы я мог читать из него, и одновременно я пишу в файл с тем же именем, используя FileWriter. Происходит некоторое перекрытие, и во второй итерации моего цикла FileWriter не записывает в файл, поскольку он уже заполнен (следовательно, возникает проблема с перезаписью, поэтому мне нужна помощь, чтобы понять, как я могу перезаписать файл) - person Arpan Das; 18.05.2014