0

コンテンツを取得したいファイルを読み取った後、2つのファイルを読み取ろうとしています。2つのファイルのコンテンツを操作してから、出力である新しいファイルを更新します。ファイルはプログラムと同じフォルダーにありますが、プログラムは常にFileNotFoundException. 以下は私のコードです: -

import java.io.*;
import java.util.Scanner;

public class UpdateMaster {

public static void main(String[] args)
{
    String master = "Customer.dat";
    String trans = "Transactns.dat";
    String newMaster = "Temp.txt";

    Scanner inputStreamMaster = null;
    Scanner inputStreamTrans = null;
    PrintWriter inputStreamNewMaster = null;

    try
    {
        inputStreamMaster = new Scanner(new File(master));
        inputStreamTrans = new Scanner(new File(trans));
        inputStreamNewMaster = new PrintWriter(newMaster);

    }
    catch(FileNotFoundException e)
    {
        System.out.println("Error: you opend a file that does not exist.");
        System.exit(0);
    }
    catch(IOException e)
    {
        System.out.println("Error.");
        System.exit(0);
    }



    do
    {

        String transLine = inputStreamTrans.nextLine();
        String masterLine = inputStreamMaster.nextLine();

        String[] transLineArr = transLine.split(","); 
        String[] masterLineArr = masterLine.split(",");

        int trAccNo = Integer.parseInt(transLineArr[0]);
        int sales = Integer.parseInt(transLineArr[1]);
        int masterAccNo = Integer.parseInt(masterLineArr[0]);
        int balance = Integer.parseInt(masterLineArr[1]);
        while(masterAccNo== trAccNo){

            inputStreamNewMaster.println(trAccNo+ " , "+masterAccNo);
            masterLine = inputStreamMaster.nextLine();
            masterLineArr = masterLine.split(",");
            masterAccNo = Integer.parseInt(masterLineArr[0]);
            balance = Integer.parseInt(masterLineArr[1]);
        }
        balance = balance + sales;
        inputStreamNewMaster.println(masterAccNo+ " , "+balance);








    }while(inputStreamTrans.hasNextLine());

    inputStreamMaster.close();
    inputStreamTrans.close();
    inputStreamNewMaster.close();


    //System.out.println(" the line were written to "+ newMaster);


}
}
4

5 に答える 5

0

絶対パスを使用

String master = "C:/Data/Customer.dat";
String trans = "C:/Data/Transactns.dat";
String newMaster = "C:/Data/Temp.txt";
于 2013-10-25T09:38:19.067 に答える
0

@Ankit Rustagi がコメントで述べたように、現在の実装を維持したい場合は、ファイルのフル パスが必要です。

ただし、ファイル名のみが必要な解決策があります: BufferedReader/を使用しますBufferedWriterこれらのクラスの使用方法については、こちらの例を参照してください (この例では、フル パスを使用していますが、パスなしでも機能します)。

于 2013-10-25T09:35:37.923 に答える
0

これを試して:

String current = new java.io.File( "." ).getCanonicalPath();
System.out.println("I look for files in:"+current);

プログラムが入力ファイルを見つけると予想するディレクトリを確認するには。正しいディレクトリが表示される場合は、ファイル名のスペルを確認してください。それ以外の場合は、何が問題なのかがわかります。

于 2013-10-25T09:48:52.800 に答える