サーバー上のテキストの読み込みにおけるセキュリティ上のエラーの解決方法について

このQ&Aのポイント
  • サーバー上のテキストを読み込むプログラムでセキュリティ上のエラーが発生しています。解決方法について教えてください。
  • クライアントがapplet上からサーバーのappletプログラムがあるフォルダにあるテキストファイル(test.txt)からデータを読み込む方法を教えてください。
  • getImage関数ではうまくいくのですが、テキストファイルの読み込みではセキュリティ上のエラーが発生しています。どのように解決すればよいでしょうか。
回答を見る
  • ベストアンサー

サーバー上(外部)のテキストの読み込み

以下のようなtest.txtから二次元配列を読み込むプログラムを 今度はクライアントがapplet上からサーバーのappletプログラムがあるフォルダにあるtest.txtからデータを読み込むようにしたいのですが どうしてもセキュリティ上のエラーが出てしまいます。 画像などはgetImageでうまくいくのですが・・・ BufferedReader reader = null; String strArray[][] = new String[5][2]; String fileName = "test.txt"; int i = 0; int j = 0; try { reader = new BufferedReader ( new FileReader(fileName) ); String line; while ( (line = reader.readLine() ) != null ) { StringTokenizer st = new StringTokenizer (line ); while ( st.hasMoreTokens() ) { strArray[i][j] = st.nextToken(); j++; } j = 0;// 横のindexをリセット i++;// 縦のindexを次に } } catch ( Exception e ) { System.out.println ( e.toString() ); } ---------test.txt(例) 200 200 30 60 301 33 11 66 100 390 自分でも調べていくつもりですが期限があるためもしご存知の方がいましたら是非ご教授よろしくお願いいたします。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.1

getImage の場合、URLを指定していると思います。 上記ソースを眺めますと、new FileReader(fileName) とされてます。 appletはブラウザのVMで実行していますので、ローカルファイルを 参照しようとしてエラーとなるのではないでしょうか。 BufferedReader にテキストのURLを指定すれば読めそうな気がします。 こんな感じでどうでしょう? URL url = new URL("http://www.foo.com/sample.txt"); reader = new BufferedReader(new InputStreamReader( url.openStream(), "JISAutoDetect"));

alice-su
質問者

お礼

java.lang.ArrayIndexOutOfBoundsException: 2 迅速な回答に感謝いたします。 URLを指定する方法でいくらかやってみたのですが自分ではうまくいきませんでしたが、教えていただいた方法でうまくいきました。 しかしprintlnで読み込めていることは確認できたのですが g.fillOval(Integer.parseInt(strArray[1][1]),Integer.parseInt(strArray[1][2]),5,5); のように参照しようとするとなぜか java.lang.ArrayIndexOutOfBoundsException: 2 と出てしまうのでもう少しがんばってみようと思います

alice-su
質問者

補足

解決しました 余りにも馬鹿らしいミスでした 人間あせると駄目なようです。 お騒がせしましたが本当に感謝いたします。ありがとうございました

関連するQ&A

  • javaプログラミングの質問です。

    http://questionbox.jp.msn.com/qa1030602.html?StatusCheck=ON に載っている、プログラムを以下のようにQuestionというクラスで実行してみたところ、 import java.io.*; class Question{ public static void main(String Args[]){ BufferedReader reader = null; String strArray[][] = new String[4][4]; String fileName = "foo.txt"; int i = 0; int j = 0; try{ reader = new BufferedReader ( new FileReader(fileName) ); String line; while ( (line = reader.readLine() ) != null ){ StringTokenizer st = new StringTokenizer ( line ); while ( st.hasMoreTokens() ){ strArray[i][j] = st.nextToken(); System.out.print ( strArray[i][j] + " " ); j ++; } j = 0; i ++; System.out.println (""); } } catch ( Exception e ){ System.out.println ( e.toString() ); } } } Exception in thread "main" java.lang.Error: コンパイル問題が未解決です。 StringTokenizer を型に解決できません。 StringTokenizer を型に解決できません。 というエラーが出ます。 このサイトの質問者はうまくいっているようなのですが、私のコンパイラがうまく動いていないのでしょうか? java version "1.6.0_07" を使っていて、Eclipseを用いてコンパイルをしたりしています。 どなたかご指摘をどうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • StringTokenizerについて

    JAVAの勉強をしているのですが、StringTokenizerの役割がよく分かりません。検索サイトを使って色々調べてみたのですが、「トークンを区切る」だとかよく分からない言葉が出てきて全く理解できません。以下はあるデータから項目を抽出するプログラムらしいのですが、参考としてこの例でStringTokenizerがどのような役割を果たしているのか教えて下さい。複雑で説明しにくければStringTokenizerそのものの説明でも十分です。よろしくお願いします。 BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); String line=""; try { int i=0; while ((line = reader.readLine()) != null) { int fcount=1; StringTokenizer st = new StringTokenizer(line); while (st.hasMoreTokens()) { switch (fcount) { case 2: //項目2:被説明変数Y data[i][0]=Integer.parseInt(st.nextToken()); break; case 4: //項目4:説明変数X data[i][1]=Integer.parseInt(st.nextToken()); break; default: // その他の項目 String dummy=st.nextToken(); break; } fcount++; } i++; } NofData=i;

    • ベストアンサー
    • Java
  • CSVファイルの、列だけ取得したい

    FileReader filereader = new FileReader(FileName); BufferedReader bufferedreader = new BufferedReader(filereader); String line; int i = 0; while((line = bufferedreader.readLine()) != null) { int j = 0; StringTokenizer stringTokenizerTest = new StringTokenizer(line, ","); while(stringTokenizerTest.hasMoreTokens()) { item[j][i]=stringTokenizerTest.nextToken().toString(); j++; } i++; } filereader.close(); このような記述で、CSVの中身を全て取得することは出来るのですが、 ある一列だけ取得する方法がわかりません。 具体的には、コンボボックスにCSVのある一列だけ表示させたいです。 (その後、重複なしの値のみにフィルタリングしたい) 現在は苦し紛れに、 combo1.setModel(new DefaultComboBoxModel(new String[] { item[1][3], item[1][4], item[1][5], item[1][6], item[1][7], item[1][8], item[1][9], })); などと、配列を使ってピンポイントで値を取得していますが これでは使えないので・・ アドバイスよろしくお願いいたします。

    • ベストアンサー
    • Java
  • 配列の値の参照について

    下記のプログラムの-------------で囲まれた部分が、コンパイルは通るのですが実行すると"value[1][0]"以降が参照できません(ここではcount=3 となっています)。 for文を使わずに"System.out.println(value[1][0])"とすると値を取り出せるのですが…。 実行時のエラーは Exception in thread "main" java.lang.ArrayIndexOutOfBoundException: 3 です。 ソースコードをそのまま載せて長文になってしまい申し訳ありません。 プログラム初心者なので、些細なことでもいいので回答お願いします。 import java.util.*; import java.io.*; public class Search { static String dataFileName = "CityData.txt"; ArrayList<String> array = new ArrayList<String>(); GetDataCount gdc = new GetDataCount(dataFileName); int count = gdc.getCount(); int count2 = 0; String[][] value = new String[count][3]; public Search(String dataFileName){ try{ BufferedReader reader = new BufferedReader( new FileReader(dataFileName) ); String line = ""; while((line = reader.readLine()) != null){ Vector<String> variable = readLine(line); System.out.println(variable); count2++; } }catch(IOException e){ System.out.println(e); } //---------------------------------------------------------- for (int i=0; i<count2; i++){ for (int j=0; i<3; j++){ System.out.println(value[i][j]); } } //---------------------------------------------------------- } public Vector<String> readLine( String line ){ StringTokenizer st = new StringTokenizer( line, "," ); Vector<String> variable = new Vector<String>(); for( int i=0 ; i<3 ; i++ ){ String data = st.nextToken(); variable.addElement( data ); value[count2][i] = data; System.out.println(value[count2][i]); } return variable; } public class GetDataCount{ int count = 0; public GetDataCount(String dataFileName){ try{ BufferedReader reader = new BufferedReader( new FileReader(dataFileName) ); String line = ""; while((line = reader.readLine()) != null){ count++; } }catch(IOException e){ System.out.println(e); } } public int getCount(){ return count; } } public static void main(String[] args){ new Search(dataFileName); } }

  • ファイル読み込みで

    市販のテキストでファイルを読み込むプログラムを作ったのですがうまくできません。 import java.io.*; public class ShowFile{ public static void main(String args[]){ if(args.length != 1){ System.out.println("使用法: java ShowFile ファイル"); System.out.println("例: java ShowFile ShowFile.java"); System.exit(0); } String filename = args[0]; try{ BufferedReader reader = new BufferedReader(new FileReader(filename)); String line; while((line = reader.readLine()) != null){ System.out.println(line); } reader.close(); }catch(FileNotFoundException e){ System.out.println(filename + "が見つかりません"); }catch(IOException e){ System.out.println(e); } } } javac ShowFile.javaでコンパイルはうまくいったのですが、 実行時にjava ShowFile input.txtとするとException in thread "main" java.lang.NoClassDefFoundError: ShowFile というエラーが出ます。input.txtというファイルは存在します。 アドバイスをお願いします。

    • ベストアンサー
    • Java
  • CSV読み込み 文字化け

    失礼いたします。 以前のログを見てエンコードを設定してみたのですが、出力が文字化けします。ローカルファイルを読み込んでコンソール出力しているだけなのですが・・・。 分かる方、よろしくお願いします。 -------------------ソースはここから import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; // import java.io.FileReader; FileReaderからInputStreamReaderに変更済み import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class ReadCSV { public static void main(String[] args) { try { File csv = new File("C:\\AP.csv"); // BufferedReader br = new BufferedReader(new FileReader(csv)); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"EUC_JP")); // BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(csv),"MS932")); while (br.ready()) { String line = br.readLine(); StringTokenizer st = new StringTokenizer(line, ","); while (st.hasMoreTokens()) { System.out.print(st.nextToken() + "\t"); } System.out.println(); } br.close(); } catch (FileNotFoundException e) { キャッチ処理 }

    • ベストアンサー
    • Java
  • 拡張子の読み込み制限を設けたいのですが・・・

    現在Javaのプログラム課題を行っているものです。 前回こちらで質問させていただいたのですが、 解決に至らなかったので再度質問させていただきたいと思います。 前回の質問→ http://okwave.jp/qa4023470.html こちらが修正後のプログラムの一部です。↓ package studyA; import java.util.*; import java.io.FileReader; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.IOException; public class A23_StrArray extends A22_StrArray { /** * テキストファイルの読込み(上書きモード) * @param path ファイルのパス * @exception FileNotFoundException ファイルが見つからなかった場合 * IOException 入出力エラーが発生した場合 */ // 修正として付け加えた部分(開始位置) public class CheckClass check { check = new CheckClass(); check = path; public boolean accept(path) { //拡張子がtxtであるかのの判定を行います。 String ext = getExtension(path); if (ext != null && ext.equals("txt")) { return true; } } } //プログラム修正箇所 (終点) public void readFile(String path) throws Exception { try { //BufferedReader in = new BufferdReader(new FileReader()) FileReader fr = new FileReader(path); //FileReaderのインスタンスを作成 BufferedReader br = new BufferedReader(fr); //BufferedReaderのインスタンスを作成 String line; list.clear(); //リストをクリア while ((line = br.readLine()) != null) //要素がなくなるまで繰り返す { add(line); } System.out.println("ファイルを読み込みしました。"); br.close(); } catch(FileNotFoundException e)//ファイルが見つからなかった時 { System.out.println("ファイルが見つかりません。"); } catch(IOException e)//入出力エラーが発生した場合 { System.out.println("入出力エラーが発生しました。"); } } 現在は、コンパイルエラーでC:\Java>javac A23_StrArray.java A23_StrArray.java:28: '{' がありません。 public class CheckClass check と表示されます。一体どのように修正を加えれば、 txtのみ読み込んで、上書きなどができるプログラムを作ることができるのでしょうか?

    • ベストアンサー
    • Java
  • HashMap.putについて

    ご質問させて頂きます。 hashMap.putの使い方が良く分かりません。 例えば、以下のようなkudamono.csvファイルがあるとします。 ------------------- A,2003/01/01,スイカ B,2003/02/01,バナナ C,2003/03/01,メロン D,2003/04/01,イチゴ ------------------- このデータをhashMap.putでセットしたいので 以下のようなクラスにしたんですが コンパイルエラーが出てしまいます。 ------------------- /*HashMap生成(クラス変数)*/ public static HashMap hashMap = new HashMap(); public static void main(String args[]) throws Exception { FileReader filereader = new FileReader("kudamono.csv"); BufferedReader bufferedreader = new BufferedReader(filereader); String line; int i = 1; int j = 0; while((line = bufferedreader.readLine()) != null) { System.out.println("Start line at " + i); StringTokenizer stringTokenizerTest = new StringTokenizer(line, ","); while(stringTokenizerTest.hasMoreTokens()) { HashMap.put(stringTokenizerTest.nextToken().toString()); j++; } i++; } filereader.close(); } } --------------- たぶんHashMap.putをする前に キーをセットしたり変数を宣言したりすると思うのですが その辺が良く分かりません。 ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • StringTokenizerクラスでのエラーについて

    仕事で一人で組んでいるので、尋ねる相手がいません。 どなたか教えて下さいm(__)m かなり長い文字列を読込んで、その文字列を"!"を条件に分割したいので、以下のようなソースを書きました。 実行すると、NullPointerExceptionが発生します。 public class Split2 { public static void main(String args[]) throws IOException { //サンプルファイルの読込み BufferedReader red = new BufferedReader(new FileReader("getRoute_ResultSample_1.txt")); String line; while ((line = red.readLine()) != null) { System.out.println(line); } red.close(); StringTokenizer strToken = new StringTokenizer(line, "!"); int cnt = strToken.countTokens(); 文字列分割処理の一番最初の処理として"1"で区切り、その数をまず取得したいのです。 私は結構初心者PGです。 よろしくお願い致しますm(__)m

    • ベストアンサー
    • Java
  • vectorを使った列の計算について

    への補足 列合計を計算したいのですが、 まったくといってどうすればいいのか思いつきません>< どのようにループすれば列合計を計算、出力できるのでしょうか? import java.util.*; import java.io.*; public class Gyosyukei { public static void main(String args[]) { try{ BufferedReader br = new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ // 1行を格納するVector Vector vcLine = new Vector(); StringTokenizer st = new StringTokenizer(str,","); for(int i =0;st.hasMoreTokens(); i++){ String token = st.nextToken(); // 行の要素に追加 vcLine.addElement(token); } /* 行合計 */ int gyosum = 0; int num = 0; for(int j =1; j < vcLine.size(); j++){ num = Integer.parseInt((String)vcLine.get(j)); gyosum += num; } System.out.println(gyosum); } } catch(IOException e){ } catch(ArrayIndexOutOfBoundsException ae){ } } }

    • ベストアンサー
    • Java

専門家に質問してみよう