Всем доброго времени суток, в програме есть два потоки, один читает, с одного файла, второй записывает транслитный текс во второй, выкидает ошибку 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();
}
}