私の問題は次のコードにあります。
alreadyUser(String username)
問題は、ファイルがまだシステムに存在しない場合に呼び出すと、FileNotFoundException が発生することです。このエラーを乗り越えたいのですが、わかりません。
そのため、アプリの起動時に、システムは uname と pass を要求します。次に、 alreadyUser メソッドが呼び出され、ファイルがまだほとんど作成されていない場合はエラーが発生します(たとえば、手動で作成します)。そして、次にプログラムを起動するときに、ファイルが既に存在する場合は、古いデータがなくなるため、新しいデータに切り替えてはなりません:)
public final class TinyBase {
final static String FILENAME = "KEYVALUES.txt";
static FileOutputStream fos = null;
static FileInputStream fis = null;
protected static void createUser(String username, String password)
protected static boolean loadUser(String username, String password)
protected static boolean alreadyUser(String username) {
String encode = new String(username);
String compare = null;
boolean flag = false; // true - ok no such user ; false - fail username
// already in use
try {
/* ERROR IS HERE */
fis = new FileInputStream(FILENAME);
/* ERROR IS HERE */
byte[] buffer = new byte[fis.available()];
while (fis.read(buffer) != -1) {
compare = new String(buffer);
if (compare.contains(encode)) {
flag = true;
break;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
return flag;
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
}