2013-10-25 107 views
0

我想后,我看了我想要得到它们的内容和操作这两个文件的内容,然后更新一个新的文件,该文件是输出文件的读取2个文件。这些文件与程序位于同一文件夹中,但程序始终会引发FileNotFoundException。 下面是我的代码: -文本输入和输出的Java

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); 


} 
} 
+1

您需要具有文件的完整路径。例子-C:/MYDIR/a/b/file.txt –

回答

0

像@Ankit Rustagi说,在评论,你,如果你想保持目前的实现所需要的文件的完整路径。

但是,有一种解决方案,您只需要文件名:使用BufferedReader/BufferedWriter。有关如何使用这些类的示例,请参阅here(在示例中,它使用完整路径,但它在没有它的情况下也可以使用)。

0

没有什么错误使用像tihis相对路径。发生了什么事是你的程序正在寻找的目录中,你执行程序,这并不一定是程序的文件夹中的文件。在尝试读取文件之前,您可以通过记录文件的绝对路径来确认这一点。例如:

File masterFile = new File(master); 
System.out.printf("Using master file '%s'%n", masterFile.getAbsolutePath()); 
inputStreamMaster = new Scanner(masterFile); 

一般来说,你不应该硬编码的文件路径,但允许用户使用命令行参数,有一个众所周知的路径,或交互式用户界面的配置文件以某种方式指定它们,例如。

有一种方法可以找到程序的类文件,但它有点棘手,因为Java允许从位于远程系统中的压缩归档中加载类。以其他方式解决这个问题更好。

0

使用绝对路径

String master = "C:/Data/Customer.dat"; 
String trans = "C:/Data/Transactns.dat"; 
String newMaster = "C:/Data/Temp.txt"; 
0

的代码对我的作品,我想你拼错了一些文件名(S)或你的文件在错误的文件夹。我创建了与src或项目相同级别的文件。这也是文件所在的文件夹。

0

试试这个:

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

要查看你的程序需要找到它的输入文件的哪个目录。如果它显示正确的目录,请检查文件名的拼写。否则,你会知道出了什么问题。