2017-09-05 17 views
0

既存のファイルを同じ名前で上書きせずにファイルを* .xlsxとして保存しようとしています。私は、指定されたファイルが存在する場合のみ、file(1).xlsx、file(2).xlsxのような新しいファイル名に接尾辞を付け加えることを考えました。ここで私はこれまで何を試してみました:同じ名前の既存ファイルを上書きせずにファイルを保存する方法

do { 
    s = JOptionPane.showInputDialog("Enter the name of the file name"); 
    File tmpDir = new File(System.getProperty("user.home"), "Documents\\Challan_Reports\\" + s + ".xlsx"); 

    boolean exists = tmpDir.exists(); 
    if (exists) { 
    JOptionPane.showMessageDialog(this, "File Name Already exists try again!"); 

    } 
    else { 
    break; 
    } 
} while (true); 
if (s.equals("") || s.equals(null)) { 
    //......................................................................... 
    File tmpDir = new File(System.getProperty("user.home"), "Documents\\Challan_Reports\\" + gname + " " + date + ".xlsx"); 
    boolean exists = tmpDir.exists(); 
    if (exists) { 
    JOptionPane.showMessageDialog(this, "exists 1"); 
    for (int m= 1; true;m++) 
    { 
     JOptionPane.showMessageDialog(this, "exists m " + m); 
     File tmpDir1 = new File(System.getProperty("user.home") + "\\Documents\\Challan_Reports\\" + gname + " " + date + " (" + m + ").xlsx"); 
     System.out.println(System.getProperty("user.home") + "\\Documents\\Challan_Reports\\" + gname + " " + date + " (" + m + ").xlsx"); 
     boolean exists1 = tmpDir1.exists(); 
     if (exists) { 
     System.out.println("exists file"); 
     continue; 
     } 
     else { 

     System.out.println(" not exists"); 
     filename = System.getProperty("user.home") + "\\Documents\\Challan_Reports\\" + gname + " " + date + " (" + m + ").xlsx"; 
     break; 
     } 
    } 
    } 
    //  FileOutputStream out = new FileOutputStream(new File(System.getProperty("user.home"),"Documents\\Challan_Reports\\"+gname+" "+date+".xlsx")); 
    // workbook.write(out); 
    // out.close(); 
} 
FileOutputStream out = new FileOutputStream(new File(filename)); 
workbook.write(out); 
out.close(); 
System.out.println(
    "Writesheet.xlsx written successfully"); 
JOptionPane.showMessageDialog(this, filename + ".xlsx \n\\Generated at path" + System.getProperty("user.home") + "\\Documents\\Challan_Reports"); 
     } 
    catch(Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
} 

問題は、それが.....ファイル(1)またはファイル(2)のように出力を与えることがないとき が存在するということです。 Ifループ内の条件は、条件をif(!exists)とすると、初めてのみ動作します。私を助けてください。

答えて

0

ファイルの存在を確認している状態で、何も正しく行われていませんか?名前に何も追加しないので、ファイルが存在する場合、同じ名前だけを保存しようとします。あなたはあなたではなく、変数exists1をチェックし、確認ミスをしているファイルの存在

1

を見つけたら、あなたはをチェックしていることを存在し、それがループ部分の前から本当です追加してみてください。

以下のように変更してください。

boolean exists1 = tmpDir1.exists(); 
    if(exists1)// change here exists to exists1 
    { 
      System.out.println("exists file"); 
      continue; 
    } 
    else{ 

     System.out.println(" not exists"); 
     filename=System.getProperty("user.home")+"\\Documents\\Challan_Reports\\"+gname+" "+date+" ("+m+").xlsx"; 
     break; 
    } 
+0

私の一日を保存しました –

+0

@ Mr.Hunt Congrats、あなたは答えを受け入れたものとしてマークする必要があります。 –

関連する問題