2016-06-18 83 views
0

目錄這是我的代碼:打開與gfortran

Program Write_in_folder 

Implicit none 

Integer::Num_Ber 
Integer,parameter::Le=367 
Character(Le)::Output 
Character(Le),parameter::fmt_1='("Result\Output_",i0,".txt")' 
Character(Le),parameter::fmt_2='(2x,i0)' 
Character(Le),parameter::fmt_3='mkdir Result' 

Write(*,*)"Enter the number:" 
Read(*,*)Num_Ber 

Write(Output,trim(adjustl(fmt_1)))Num_Ber 

Call execute_command_line(trim(adjustl(fmt_3))) 

Open(Unit=1,File=trim(adjustl(Output)),Status='Unknown') 

    Write(1,trim(adjustl(fmt_2)))Num_Ber 

Close(Unit=1,Status='Keep') 

Stop 
End Program Write_in_folder 

如何打開文件夾ResultNum_Ber擴展? 例如,如果Num_Ber是56我想打開文件夾:Result_56。 如何檢查此文件夾是否打開之前,如果它是我想停止執行此子程序:Call execute_command_line

+0

請注意使用相關標籤,您的問題幾乎看不見。你目前的程序做了什麼?它有什麼問題?請cpnfirm,ypu打開一個文件(程序員稱爲目錄)還是文件?您無法打開文件夾,只能將當前目錄移動到文件夾中。 –

+0

當程序啓動時,我想用這種形式打開目錄:'Result_Num_Ber'。如果這個文件夾存在,程序將跳過'調用execute_command_line(trim(adjustl(fmt_3)))'並且在下一步中,他將打開目錄中的文件用這種形式:'Output_Num_Ber'。 如何做到這一點? –

+0

沒有什麼比如打開一個目錄。這樣的操作根本不存在。您可以在目錄中打開一個文件。 –

回答

1

簡短的回答: 你想要做的是改變fmt_3

Character(Le),parameter::fmt_3='mkdir -p Result' 

定義使用選項-p,如果它不存在,如果它存在什麼也不做它mkdir將創建目錄。

龍答:

根據您的問題的描述,內在的查詢功能,可以用來做你想做的事情。 下面的語句

inquire (file=fileName, exist=existStatus) 

其中fileName是包含路徑的目錄和existStatus一個字符串變量是一個邏輯變量,將在existStatus如果該目錄存在或.false.如果不返回.true.

即將開放目錄,我想你不是說你在說什麼,你不想亂搞目錄。文件系統中的目錄是一個容器,您希望將該容器的內部留給操作系統,並使用系統給您提供的界面:

  • 創建一個目錄;
  • 列出目錄的內容;
  • 在目錄下創建文件;
  • 從目錄中刪除文件;

現在查詢該目錄的存在後,你可以,如果它不存在,它創建它。

inquire (file=fileName, exist=existStatus) 
if(.not.existStatus)then 
    !the code to create the directory here 
end if 

如果這是你想要達到的目標,你可以使用的mkdir的選項-pmkdir -p dirPath如果目錄不存在,則創建目錄,如果該目錄已存在,則不執行任何操作。