Exemplo n.º 1
0
        public CasetteStream(IDeviceMapping deviceMap, String tiFileName, FileType fileType, 
                             FileOpenMode fileMode, int recSize)
        {
            String nativeFileName = deviceMap.GetNativeFileName(tiFileName);

            if (recordSize > allowableRecordSizes[allowableRecordSizes.Length-1]) throw new ArgumentOutOfRangeException("recordSize");
            if (fileType == FileType.Display) throw new NotImplementedException("Display mode not yet supported");

            foreach(int i in allowableRecordSizes)
            {
                if (i > recSize)
                {
                    this.recordSize = i;
                    break;
                }
            }
            this.fileType = fileType;
            this.fileMode = fileMode;

            if (this.fileMode == FileOpenMode.Output)
            {
                CreateBuffer();
                stream = NativeFile.Open(nativeFileName, FileMode.Create, FileAccess.Write, FileShare.Read);
            }
            else
            {
                buffer = new byte[this.recordSize];
                stream = NativeFile.Open(nativeFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
            }
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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;
        }