public static File Open(IDeviceMapping deviceMap, String fileName, FileOrganization org, FileType fileType, FileOpenMode mode, FileRecordType recordType) { return new File(deviceMap, fileName, org, fileType, mode, recordType); }
private File(IDeviceMapping deviceMap, String fileName, FileOrganization org, FileType fileType, FileOpenMode mode, FileRecordType recordType) { //if (fileName != CS1 && fileName != CS2) throw new InvalidOperationException("Only fileNames of CS1 and CS2 are currently supported"); String nativeFileName = deviceMap.GetNativeFileName(fileName); //if (fileName == CS2 && mode == FileOpenMode.Input) throw new InvalidOperationException("Can't use CS2 for Input"); if (org != FileOrganization.Sequential) throw new InvalidOperationException("CS1 and CS2 only support sequential"); if (recordType != FileRecordType.Fixed) throw new InvalidOperationException("CS1 and CS2 only support Fixed"); if (fileType != FileType.Internal) throw new NotImplementedException("Internal is preferred for casettes, Display is not yet implemented."); if (mode == FileOpenMode.Input) { FileStream stream = NativeFile.Open(nativeFileName, FileMode.Open, FileAccess.Read, FileShare.Read); reader = new StreamReader(stream, encoding); } else { FileStream stream = NativeFile.Open(nativeFileName, FileMode.Create, FileAccess.Write, FileShare.Read); writer = new StreamWriter(stream, encoding); writer.AutoFlush = true; } isCasette = true; }