protected virtual void WriteDictionary(string filename) { //new File(filename).getParentFile().mkdirs(); System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filename)); using (Stream os = new FileStream(filename, FileMode.Create, FileAccess.Write)) { DataOutput @out = new OutputStreamDataOutput(os); CodecUtil.WriteHeader(@out, BinaryDictionary.DICT_HEADER, BinaryDictionary.VERSION); @out.WriteVInt32(m_buffer.Position); //WritableByteChannel channel = Channels.newChannel(os); // Write Buffer m_buffer.Flip(); // set position to 0, set limit to current position //channel.write(buffer); while (m_buffer.HasRemaining) { @out.WriteByte(m_buffer.Get()); } if (Debugging.AssertsEnabled) { Debugging.Assert(m_buffer.Remaining == 0L); } } }
// TODO: maybe this int[] should instead be the output to the FST... protected virtual void WriteTargetMap(string filename) { //new File(filename).getParentFile().mkdirs(); System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filename)); using (Stream os = new FileStream(filename, FileMode.Create, FileAccess.Write)) { DataOutput @out = new OutputStreamDataOutput(os); CodecUtil.WriteHeader(@out, BinaryDictionary.TARGETMAP_HEADER, BinaryDictionary.VERSION); int numSourceIds = lastSourceId + 1; @out.WriteVInt32(targetMapEndOffset); // <-- size of main array @out.WriteVInt32(numSourceIds + 1); // <-- size of offset array (+ 1 more entry) int prev = 0, sourceId = 0; for (int ofs = 0; ofs < targetMapEndOffset; ofs++) { int val = targetMap[ofs], delta = val - prev; Debug.Assert(delta >= 0); if (ofs == targetMapOffsets[sourceId]) { @out.WriteVInt32((delta << 1) | 0x01); sourceId++; } else { @out.WriteVInt32((delta << 1)); } prev += delta; } Debug.Assert(sourceId == numSourceIds, "sourceId:" + sourceId + " != numSourceIds:" + numSourceIds); } }
protected virtual void WritePosDict(string filename) { //new File(filename).getParentFile().mkdirs(); System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filename)); using (Stream os = new FileStream(filename, FileMode.Create, FileAccess.Write)) { DataOutput @out = new OutputStreamDataOutput(os); CodecUtil.WriteHeader(@out, BinaryDictionary.POSDICT_HEADER, BinaryDictionary.VERSION); @out.WriteVInt32(posDict.Count); foreach (string s in posDict) { if (s == null) { @out.WriteByte((byte)0); @out.WriteByte((byte)0); @out.WriteByte((byte)0); } else { string[] data = CSVUtil.Parse(s); if (Debugging.AssertsEnabled) { Debugging.Assert(data.Length == 3, () => "malformed pos/inflection: " + s); } @out.WriteString(data[0]); @out.WriteString(data[1]); @out.WriteString(data[2]); } } } }
/// <summary> /// Sole constructor. /// </summary> public DiskOrdinalMap(string tmpfile) { this.tmpfile = tmpfile; var outfs = new FileStream(tmpfile, FileMode.OpenOrCreate, FileAccess.Write); @out = new OutputStreamDataOutput(outfs); }
public void Write(string baseDir) { //string filename = baseDir + System.IO.Path.DirectorySeparatorChar + // typeof(ConnectionCosts).FullName.Replace('.', System.IO.Path.DirectorySeparatorChar) + ConnectionCosts.FILENAME_SUFFIX; // LUCENENET specific: we don't need to do a "classpath" output directory, since we // are changing the implementation to read files dynamically instead of making the // user recompile with the new files. string filename = System.IO.Path.Combine(baseDir, typeof(ConnectionCosts).Name + CharacterDefinition.FILENAME_SUFFIX); //new File(filename).getParentFile().mkdirs(); System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(filename)); using (Stream os = new FileStream(filename, FileMode.Create, FileAccess.Write)) { DataOutput @out = new OutputStreamDataOutput(os); CodecUtil.WriteHeader(@out, ConnectionCosts.HEADER, ConnectionCosts.VERSION); @out.WriteVInt32(forwardSize); @out.WriteVInt32(backwardSize); int last = 0; Debug.Assert(costs.Length == backwardSize); foreach (short[] a in costs) { Debug.Assert(a.Length == forwardSize); for (int i = 0; i < a.Length; i++) { int delta = (int)a[i] - last; @out.WriteVInt32((delta >> 31) ^ (delta << 1)); last = a[i]; } } } }
public void Write(string baseDir) { //string filename = baseDir + System.IO.Path.DirectorySeparatorChar + // typeof(CharacterDefinition).FullName.Replace('.', System.IO.Path.DirectorySeparatorChar) + CharacterDefinition.FILENAME_SUFFIX; // LUCENENET specific: we don't need to do a "classpath" output directory, since we // are changing the implementation to read files dynamically instead of making the // user recompile with the new files. string filename = System.IO.Path.Combine(baseDir, typeof(CharacterDefinition).Name + CharacterDefinition.FILENAME_SUFFIX); //new File(filename).getParentFile().mkdirs(); System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(baseDir)); using (Stream os = new FileStream(filename, FileMode.Create, FileAccess.Write)) { DataOutput @out = new OutputStreamDataOutput(os); CodecUtil.WriteHeader(@out, CharacterDefinition.HEADER, CharacterDefinition.VERSION); @out.WriteBytes(characterCategoryMap, 0, characterCategoryMap.Length); for (int i = 0; i < CharacterDefinition.CLASS_COUNT; i++) { byte b = (byte)( (invokeMap[i] ? 0x01 : 0x00) | (groupMap[i] ? 0x02 : 0x00) ); @out.WriteByte(b); } } }
public void AddDone() { if (@out != null) { @out.Dispose(); @out = null; } }
internal virtual void Flush(OutputStreamDataOutput @out) { using (var ms = StreamUtils.SerializeToStream(this)) { var bytes = ms.ToArray(); @out.WriteBytes(bytes, 0, bytes.Length); } }
/// <summary> /// Calls <see cref="Store(DataOutput)"/> after converting /// <see cref="Stream"/> to <see cref="DataOutput"/> /// </summary> public virtual bool Store(Stream output) { DataOutput dataOut = new OutputStreamDataOutput(output); try { return(Store(dataOut)); } finally { IOUtils.Dispose(output); } }
public virtual void Flush(Stream stream) { OutputStreamDataOutput dos = new OutputStreamDataOutput(stream); try { dos.WriteInt(this.counter); // write the labelRepository this.labelRepository.Flush(dos); // Closes the data output stream dos.Dispose(); } finally { dos.Dispose(); } }