Mega Code Archive
File Viewer
/******************************************************************************
* All Right Reserved.
* Copyright (c) 1998, 2004 Jackwind Li Guojie
*
* Created on 2004-5-13 10:10:07 by JACK
* $Id$
*
*****************************************************************************/
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class FileViewer extends ApplicationWindow {
// The text control used to display the file content.
Text text;
String content;
String lineDelimiter;
IRunnableWithProgress runnableWithProgress = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
System.out.println("Running from thread: " + Thread.currentThread().getName());
getShell().getDisplay().syncExec(new Runnable() {
public void run() {
content = text.getText();
lineDelimiter = text.getLineDelimiter();
}
});
monitor.beginTask("Counting total number of lines", content.length());
int lines = 1;
for(int i=0; i Integer.MAX_VALUE) {
// File is too large
throw new IllegalArgumentException("File is too large! (larger or equal to 2G)");
}
// Create the byte array to hold the data
byte[] bytes = new byte[(int) length];
// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException(
"Could not completely read file " + file.getName());
}
// Close the input stream and return bytes
is.close();
return bytes;
}
}