Всем доброго времени суток, в програме есть два потоки, один читает, с одного файла, второй записывает транслитный текс во второй, выкидает ошибку source not found, вот исходные класы, почему она появляется? вот исходный код класов: Главный:
Код | package mypackage;
import java.io.IOException;
public class MainClass { public static void main(final String...args) throws IOException { new CreateFiles(); final ThreadBuffer tb = new ThreadBuffer(); new Thread() { public void run() { if(!tb.isInterrupt()){ try { tb.readString(); } catch (InterruptedException ie) { } catch (IOException ioe) {} } else { this.interrupt(); try { tb.closeFiles(); } catch (IOException ioe) {} } } }.start(); new Thread() { public void run() { if(!tb.isInterrupt()){ try { tb.putString(); } catch (InterruptedException ie) { } catch (IOException e) { } } else { this.interrupt(); } } }.start(); } }
|
Промежуточный клас-буфер:
Код | package mypackage;
import java.io.IOException; import java.io.RandomAccessFile;
public class ThreadBuffer { private final TranslitDictionary td; private long fLength; private boolean interruptFlag = false; private boolean valueSet = false; private String tString = ""; private RandomAccessFile rafToRead; private RandomAccessFile rafToWrite;
ThreadBuffer() { this.td = new TranslitDictionary(); }
public boolean isInterrupt() { return interruptFlag; }
public long getFLength() { return fLength; }
public void setFLength() throws IOException { fLength = rafToRead.length(); }
public void setRafToRead() throws IOException { this.rafToRead = new RandomAccessFile("C:\\testfile.txt", "rw"); }
public void setRafToWrite() throws IOException { this.rafToWrite = new RandomAccessFile("C:\\testfile.txt", "rw"); }
public void closeFiles() throws IOException { rafToRead.close(); rafToWrite.close(); }
synchronized public void putString() throws InterruptedException, IOException { while (this.valueSet) { try { wait(); } catch (InterruptedException ie) {} } rafToWrite.writeUTF(tString); this.valueSet = false; notify(); }
synchronized public void readString() throws InterruptedException, IOException { if (rafToRead.getFilePointer() <= fLength) { while (!this.valueSet) { try { wait(); } catch (InterruptedException ie) {} } String tempCh = tString; System.out.println(tempCh); tempCh = rafToRead.readUTF(); tempCh = tempCh.toUpperCase(); char[] chArr = tempCh.toCharArray(); for (int count = 0; count < chArr.length; count++) { if (td.isTransChar(chArr[count])) { chArr[count] = td.getTransChar(chArr[count]); } } tempCh = ""; for (char ch : chArr) { tempCh += ch; } tString = tempCh; System.out.println(tString); this.valueSet = true; notify(); } else { interruptFlag = true; } }
}
|
Хеш таблица для транслита:
Код | package mypackage; import java.util.Hashtable;
public class TranslitDictionary { private Hashtable<Character, Character> translitHt; public Character getTransChar(Character ch) { return translitHt.get(ch); } public boolean isTransChar(Character ch) { return translitHt.containsKey(ch); } public TranslitDictionary() { // TODO Auto-generated constructor stub translitHt = new Hashtable<Character, Character>(); translitHt.put('А', 'A'); translitHt.put('Б', 'B'); translitHt.put('В', 'V'); translitHt.put('Г', 'G'); translitHt.put('Д', 'D'); translitHt.put('Ж', 'G'); translitHt.put('З', 'Z'); translitHt.put('И', 'I'); translitHt.put('Й', 'J'); translitHt.put('К', 'K'); translitHt.put('Л', 'L'); translitHt.put('М', 'M'); translitHt.put('Н', 'N'); translitHt.put('О', 'O'); translitHt.put('П', 'P'); translitHt.put('Р', 'R'); translitHt.put('С', 'S'); translitHt.put('У', 'U'); translitHt.put('Ф', 'F'); translitHt.put('Х', 'H'); translitHt.put('Ц', 'C'); translitHt.put('Ч', '4'); translitHt.put('Ш', '4'); translitHt.put('Щ', '4'); translitHt.put('Є', 'E'); translitHt.put('Ю', 'U'); translitHt.put('Я', 'J'); } }
|
и создание файлов:
Код | package mypackage;
import java.io.File; import java.io.RandomAccessFile; import java.io.IOException;
public class CreateFiles { CreateFiles() throws IOException { File f1 = new File("C:\\testfile.txt"); if (!f1.exists()) { f1.createNewFile(); } else { f1.delete(); f1.createNewFile(); } File fT = new File("C:\\translitedFile.txt"); if (!fT.exists()) { fT.createNewFile(); } else { fT.delete(); fT.createNewFile(); } RandomAccessFile raf = new RandomAccessFile(f1, "rw"); raf.writeUTF("Здание аеропорта"); raf.close(); } }
|
|