2017-05-31 53 views
1

由于某些原因,我的程序不会写入该文件,即使我能够使try catch块无误并运行。是否有一个原因,我无法访问try块并创建此文件?在try catch块中访问和运行代码的问题

public static void main(String[] args) { 
    BufferedReader crunchifyBuffer = null; 
    try { 
     String crunchifyLine; 
     crunchifyBuffer = new BufferedReader(new FileReader("/Users/moo/Desktop/test.csv")); 
     // How to read file in java line by line? 
     while ((crunchifyLine = crunchifyBuffer.readLine()) != null) { 
      ArrayList<String> parsedData = new ArrayList<String>(); 
      parsedData.add(crunchifyCSVtoArrayList(crunchifyLine).get(0)); 
      parsedData.add(crunchifyCSVtoArrayList(crunchifyLine).get(7)); 
      parsedData.add(crunchifyCSVtoArrayList(crunchifyLine).get(8)); 
      System.out.println("\n"+ parsedData + "\n"); 
      String ID = parsedData.get(0); 
      String[] aVPayload = new String[3]; 
      aVPayload[0] = ID; 
      String holder = sdkCall(aVPayload); 
      try { 
       JSONObject jsonObj = new JSONObject(holder); 

       String Lat = jsonObj.getJSONObject("geo").getString("latitude"); 
       String Long = jsonObj.getJSONObject("geo").getString("longitude"); 


       try { 
        PrintWriter writer = new PrintWriter("addressValidityReport.txt", "UTF-8"); 
        writer.println("ID" + "\t" + "CSV Lat" + "\t" + "CSV Long" + "\t" + "Lat" + "\t" + "Long" + "\t" + "Status"); 
        while ((crunchifyLine = crunchifyBuffer.readLine()) != null) { 
         writer.println((crunchifyCSVtoArrayList(crunchifyLine).get(0)) + "\t" + (crunchifyCSVtoArrayList(crunchifyLine).get(7)) + "\t" + (crunchifyCSVtoArrayList(crunchifyLine).get(8)) + "\t" + Lat + "\t" + Long + "\t" + "FLAGGED" + "\n"); 
        } 
        writer.close(); 
       } catch (IOException e) { 
        System.out.println("ERROR, CHECK FILE PRINTING!"); 
       } 

      } catch (JSONException e) { 
       System.out.println("unexpected JSON exception"); 
      } 


     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 

      if (crunchifyBuffer != null) crunchifyBuffer.close(); 
     } catch (IOException crunchifyException) { 
      crunchifyException.printStackTrace(); 
     } 
    } 
} 

它运行,但没有创建文件。有两个捕获异常会导致这种情况吗?

+0

如果”重新得到没有例外抛出,那么你的CSV文件是空的? – Makoto

+0

nope它是填充的,当我使包含PrintWriter的try catch部分独立时,它会创建文件,但不能访问'Lat''Long'字符串变量,我必须将它们清零。 – kastsabug

+2

您是否尝试过使用您的调试器单步执行代码?这将使您能够精确地查看代码中每个点所设置的每个变量。 – Jason

回答

-1

你需要做一个writer.flush()之前关闭(),迫使数据被写入到文件

的PrintWriter(文件文件,字符串CSN) 创建一个新的PrintWriter,没有自动用指定的文件和字符集进行行刷新。

检查printl()方法后,我认为它不会让冲洗()和你可能失去你的数据,这就是为什么你没有你的文件在最后