抛出FILENOTFOUNDEXCEPTION后,如何恢复我遗留的代码

时间:2019-05-06 15:56:13

标签: java

我正在将文件写入目录。目录可能会无法访问。

我想做的是..

  • 当代码正在写入文件时,如果目录变得不可访问或找不到文件,则引发异常,我希望它继续检查目录是否存在,并在目录再次存在后继续执行我离开的地方。

  • 过一会儿,如果目录没有恢复,那么我将关闭程序。

我的问题是,当引发未找到文件异常时,程序将同时关闭所有程序。这是我的代码:

public class BusStopsProcessor implements Runnable
{
  private BlockingQueue<Bus<buses>> busQueue;

  private Bus<buses> BusObject; 

  public BusStopsProcessor(BlockingQueue<Bus<buses>> busQueue) 
  {
    this.busQueue = busQueue;
  }

@Override
public void run() 
{
    try 
    {
        String path = "C:\\Users\\Me\\Documents\\";         
        File file = new File(path + "busStopsFile.txt");

        FileWriter fw = new FileWriter(file, true);
        CSVWriter writer = new CSVWriter(fw, '|', CSVWriter.NO_QUOTE_CHARACTER);

        while(true) 
        {
            BusObject = busQueue.take();

            //each bus object should have a bus date if it does not then it is a 
            //poison bus object. 
            if(BusObject.getBusDate() != null) 
            {
                createBusFile(BusObject, writer);

            else 
            {
                try 
                {
                    //Finished processing bus stops so close writer.
                    writer.close();
                    fw.close();                     

                    break;
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
            }
        }

    } 
    catch (InterruptedException e) 
    {
        Thread.currentThread().interrupt();
        e.printStackTrace();
    }
    catch (FileNotFoundException e) 
    {
                    //If a  FILENOTFOUND exception is thrown here I want
                    //my code to be able to pick up where I left off

        e.printStackTrace();
        logger.warn(e.getMessage());
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
}

这是我要继续检查目录是否存在的方法。如果正在写入文件,突然目录就会关闭。我不想在文件中重复相同的信息,我希望它从上次中断的地方继续写入,但是我只是想不出该怎么做。谢谢。

    private void createBusFile(Bus<buses> aBusObject, CSVWriter writer) throws InterruptedException 
{
    //Get bus information here
    for(Bus<buses> busStop : aBusObject.getBusStops()) 
    {
        busNumber = busStop.getBusNumber();
        busArrivalTime = busStop.getBusArrivalTime();
        busStop = busStop.getBusStop();

        String[] busFields = {busNumber, busDate, busStop};

        //If a file not found exception is thrown here I want it to keep checking if the directory exists. And pick up from where I left off
        writer.writeNext(busFields);

    }

}

}

0 个答案:

没有答案