Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.netbeans.lib.cvsclient.file;
  
  import  org.netbeans.lib.cvsclient.IConnectionStreams;
  import  org.netbeans.lib.cvsclient.util.BugLog;
  import  org.jetbrains.annotations.NonNls;
  
  import java.io.*;

Author(s):
Thomas Singer
 
 public final class LocalFileReader
         implements ILocalFileReader {
 
 	// Constants ==============================================================
 
The size of chunks read from disk.
 
 	private static final int CHUNK_SIZE = 32768;
 
 	// Fields =================================================================
 
 	private final ISendTextFilePreprocessor sendTextFilePreprocessor;
   @NonNls private static final String CVS_DIR = "CVS";
 
   // Setup ==================================================================
 
 	public LocalFileReader(ISendTextFilePreprocessor sendTextFilePreprocessor) {
 		BugLog.getInstance().assertNotNull(sendTextFilePreprocessor);
 
 		this. = sendTextFilePreprocessor;
 	}
 
 	// Implemented ============================================================
 
Transmit a text file to the server, using the standard CVS protocol conventions. CR/LFs are converted to the Unix format.
 
 	public void transmitTextFile(FileObject fileObject, IConnectionStreams connectionStreams, ICvsFileSystem cvsFileSystemthrows IOException {
 		final File file = cvsFileSystem.getLocalFileSystem().getFile(fileObject);
 		if (!file.exists()) {
 			throw new FileNotFoundException(
                           SmartCvsSrcBundle.message("file.does.not.exist.error.message"file.getAbsolutePath()));
 		}
 
 		final File fileToSend = .getPreprocessedTextFile(fileconnectionStreams.getWriterFactory());
 
 		// first write the length of the file
 		long length = fileToSend.length();
 		writeLengthString(connectionStreams.getLoggedWriter(), length);
 
 		BufferedInputStream bis = null;
 		try {
 			bis = new BufferedInputStream(new FileInputStream(fileToSend));
 
 			final OutputStream outputStream = connectionStreams.getOutputStream();
 
 			// now transmit the file itself
 			final byte[] chunk = new byte[];
 			while (length > 0) {
 				final int bytesToRead = (length >= )
 				        ? 
 				        : (int)length;
 				final int count = bis.read(chunk, 0, bytesToRead);
 				length -= count;
 				outputStream.write(chunk, 0, count);
 			}
 			outputStream.flush();
 		}
 		finally {
 			if (bis != null) {
 				try {
 					bis.close();
 				}
 				catch (IOException ex) {
 					// ignore
 				}
 			}
 
 			.cleanup(fileToSend);
 		}
 	}

Transmit a binary file to the server, using the standard CVS protocol conventions.
 
 	public void transmitBinaryFile(FileObject fileObject, IConnectionStreams connectionStreams, ICvsFileSystem cvsFileSystemthrows IOException {
 		final File file = cvsFileSystem.getLocalFileSystem().getFile(fileObject);
 
 		// first write the length of the file
 		long length = file.length();
 		writeLengthString(connectionStreams.getLoggedWriter(), length);
 
 		final BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
		try {
			final OutputStream outputStream = connectionStreams.getOutputStream();
			// now transmit the file itself
			final byte[] chunk = new byte[];
			while (length > 0) {
				final int bytesToRead = (length >= )
				        ? 
				        : (int)length;
				final int count = bis.read(chunk, 0, bytesToRead);
				length -= count;
				outputStream.write(chunk, 0, count);
			}
			outputStream.flush();
		}
		finally {
			try {
				bis.close();
			}
			catch (IOException ex) {
				// ignore
			}
		}
	}
	public boolean exists(AbstractFileObject fileObject, ICvsFileSystem cvsFileSystem) {
		return cvsFileSystem.getLocalFileSystem().getFile(fileObject).exists();
	}
	public boolean isWritable(FileObject fileObject, ICvsFileSystem cvsFileSystem) {
		return cvsFileSystem.getLocalFileSystem().getFile(fileObject).canWrite();
	}
	public void listFilesAndDirectories(DirectoryObject directoryObjectCollection fileNamesCollection directoryNames, ICvsFileSystem cvsFileSystem) {
		final File directory = cvsFileSystem.getLocalFileSystem().getFile(directoryObject);
		final File[] filesAndDirectories = directory.listFiles();
		if (filesAndDirectories == null) {
			return;
		}
		for (int i = 0; i < filesAndDirectories.lengthi++) {
			final File fileOrDirectory = filesAndDirectories[i];
			final String name = fileOrDirectory.getName();
			if (name.equals()) {
				continue;
			}
			if (fileOrDirectory.isDirectory()) {
				if (directoryNames != null) {
					directoryNames.add(name);
				}
			}
			else {
				if (fileNames != null) {
					fileNames.add(name);
				}
			}
		}
	}
	// Accessing ==============================================================
	private void writeLengthString(final Writer writerlong lengththrows IOException {
		writer.write(String.valueOf(length));
		writer.write('\n');
		writer.flush();
	}
New to GrepCode? Check out our FAQ X