fortran 从txt中读取/写入文件 代码

SUBROUTINE read_txt_real(filename, vector, num_values)

   IMPLICIT NONE

   INTEGER :: ios
   INTEGER :: i
   character(len=100), intent(in) :: filename
   real(kind=8), intent(out), DIMENSION(:), ALLOCATABLE :: vector
   integer, intent(out) :: num_values  ! 用于存储文件中的数据个数也就是矩阵维度

   ! 尝试打开文件
   OPEN (UNIT=10, FILE=filename, STATUS='OLD', ACTION='READ', IOSTAT=ios)

   IF (ios /= 0) THEN
      PRINT *, "Error opening file"
   ELSE
      PRINT *, "File opened successfully"
      ! 计算文件中的数据个数
      num_values = 0
      DO
         READ (10, *, IOSTAT=ios)
         IF (ios /= 0) EXIT
         num_values = num_values + 1
      END DO

      ! 回到文件开头
      REWIND (10)

      ALLOCATE (vector(num_values))  ! 分配数组空间
      ! 读取文件中的所有实数值并存储到数组 t_true 中
      DO i = 1, num_values
         READ (10, *) vector(i)
         PRINT *, "Read value: ", vector(i)
      END DO

   END IF

   CLOSE (10)
END SUBROUTINE read_txt_real

SUBROUTINE read_txt_ingter(filename, vector, num_values)

   IMPLICIT NONE

   INTEGER :: ios
   INTEGER :: i
   character(len=100), intent(in) :: filename
   INTEGER, intent(out), DIMENSION(:), ALLOCATABLE :: vector
   integer, intent(out) :: num_values  ! 用于存储文件中的数据个数也就是矩阵维度

   ! 尝试打开文件
   OPEN (UNIT=10, FILE=filename, STATUS='OLD', ACTION='READ', IOSTAT=ios)

   IF (ios /= 0) THEN
      PRINT *, "Error opening file"
   ELSE
      PRINT *, "File opened successfully"
      ! 计算文件中的数据个数
      num_values = 0
      DO
         READ (10, *, IOSTAT=ios)
         IF (ios /= 0) EXIT
         num_values = num_values + 1
      END DO

      ! 回到文件开头
      REWIND (10)

      ALLOCATE (vector(num_values))  ! 分配数组空间
      ! 读取文件中的所有实数值并存储到数组 t_true 中
      DO i = 1, num_values
         READ (10, *) vector(i)
         PRINT *, "Read value: ", vector(i)
      END DO

   END IF

   CLOSE (10)
END SUBROUTINE read_txt_ingter

SUBROUTINE output_txt_real(filename, A, A_row, A_col)
   implicit none
   !// =========================输入要读取的矩阵名称=======================
   integer, intent(in) :: A_row, A_col
   real(kind=8), intent(in), DIMENSION(:, :), ALLOCATABLE :: A ! 假设读写A矩阵
   character(len=100), intent(in) :: filename

   !// =========================定义其他信息=======================
   integer :: status
   integer :: i, j

   ! 打开文件并将矩阵数据写入
   open (unit=10, file=filename, status='replace', action='write', iostat=status)

   ! 写入矩阵数据,按照列主序将矩阵排成一列
   do j = 1, A_col
      do i = 1, A_row
         write (10, *) (A(i, j))    !(10, *) 用*可以将原始的数据导入,按照原始数据精度
      end do
   end do

   close (10)

   print *, 'Matrix data has been written to ', trim(filename)

end SUBROUTINE output_txt_real

本文对fortran从txt中写入文件和读取文件进行了代码整理,共三个SUBROUTINE

SUBROUTINE read_txt_real(filename, vector, num_values)与SUBROUTINE read_txt_ingter(filename, vector, num_values)为从txt中读取文件,filename为txt所在路径+文件名

SUBROUTINE output_txt_real(filename, A, A_row, A_col)为将一个矩阵按列主序写入txt文件(列主序便于储存,生成的txt为一列数值);该子程序没有特意定义输出value的精度,按原矩阵中储存格式输出

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java读取txt文件和Fortrantxt文件之间也没有冲突,只要在读取和写入的过程保证文件的一致性即可。具体来说,需要注意以下几点: 1. 在Java读取txt文件时,需要确保文件已经存在并且可以被读取。如果文件不存在或者不可读,Java会抛出FileNotFoundException异常,需要进行相应的处理。 2. 在Fortran写入txt文件时,需要确保文件的打开方式是“write”或“append”,并且文件不存在时会自动创建。如果文件打开方式是“read”,则会抛出文件打开失败的错误信息。 3. 在Java读取txt文件后,需要关闭文件流,释放系统资源。在Fortran写入完txt文件后,需要关闭文件句柄,释放系统资源。 下面是Java读取txt文件和Fortran写入txt文件的示例代码: Java代码: ```java import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; import java.util.Scanner; public class ReadWriteTxt { public static void main(String[] args) { try { // 读取文件 File inputFile = new File("input.txt"); Scanner scanner = new Scanner(inputFile); // 写入文件 PrintWriter writer = new PrintWriter("output.txt"); // 逐行读取写入文件 while (scanner.hasNextLine()) { String line = scanner.nextLine(); writer.println(line); } // 关闭文件流 scanner.close(); writer.close(); } catch (FileNotFoundException e) { System.out.println("File not found."); } catch (IOException e) { System.out.println("IO exception."); } } } ``` Fortran代码: ```fortran program readwrite implicit none character(100) :: line integer :: iostat, i ! 打开文件 open(unit=10, file="output.txt", status="new", action="write") ! 写入文件 do i = 1, 10 write(line, '(A, I0)') "This is line ", i write(10, '(A)') trim(line) end do ! 关闭文件 close(unit=10) end program readwrite ``` 可以看出,Java读取txt文件和Fortran写入txt文件之间并没有冲突,可以在不同的语言之间进行文件读写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值