• 締切済み

FILEのクラスが正常に動作しないPCがある。

あるディレクトリからファイルのみ抽出する関数を作ったのですが、 あるPCでは正常に動作するが、違うPCで実行するとFILEクラスでエラーになる。 以下のソースなのですが原因として何が考えられますか? public static String[] ExtractFile(String s[],String Folder){//フォルダからファイルのみを抽出 String umeBackup[]; File f = new File( Folder ); String files[] = f.list(); int N = files.length; int k; String FileName; for( k=0; k<N; k++ ){ FileName = Folder + "/" + files[k]; File file = new File( FileName ); if( file.isFile() ){ umeBackup = s; s = new String[s.length + 1]; System.arraycopy(umeBackup, 0, s, 0, umeBackup.length); umeBackup = null; s[s.length - 1] =files[k]; } } System.out.println(s.length); f = null; return s; } ======================= String files[] = f.list();←この部分でエラーになります。 内容の詳細やソースはこちらにあります。↓ http://aomatudera.web.fc2.com/fc2/help_java.htm よろしくお願いします。

みんなの回答

回答No.5

Servletでのfileuploadをしたいのでしょうか? だとしたら、考え方が間違っています。 ブラウザから送られるファイル名は、 クライアント側のファイル名ですから、 Servlet側でそのファイル名で開こうとしても、 サーバー側にそんなファイルはありません。 詳しくは、Servlet fileupload等で検索してみてください。

回答No.4

No.1です。 エラーを見るとサーブレットなんですね。 > 画像ファイルのパスとファイル名称の値をFilePathでセットして > request.getParameterで値の取得をしているのですがこのときに FilePathってなんですか? 画像ファイルのパスとファイル名称ってことは、 inputタグのtypeはtextでしょうか。 もしかして画像ファイルパスとファイル名称に 同じパラメータ名をつけてるなんてことはないですよね。 だから、パスが取得できずファイルしか取得できてない、とか。 申し訳ないですが、いまいち、問題とされている事柄が理解できません。

noby-
質問者

補足

回答ありがとうございます。 >inputタグのtypeはtextでしょうか そのとおりです。 以下のように、サーブレットで、FilePathでファイルパス名+ファイル名を設定してます。 out.println("<input type=\"file\" name = \"FilePath\" size =\"150\"><br>"); ダブってはいないです。 一ついえることは、PCによってはうまく動いているということです。 PCの違いにより、ここの値がファイル名しか設定されないのかなあ?

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3

>String files[] = f.list();←この部分でエラーになります。 本当にここでNullPointerExceptionが発生するのですか? >int N = files.length; ここではなくて? ssk38様の提示されたURLで言っているのは、 「File#list(あちらではlistFilesですが)がnullを返す」であって、NullPointerExceptionが発生するわけではないですよね。 ディレクトリが本当に存在しているのは間違いないのでしょうか?

noby-
質問者

補足

エラーの場所は間違いないようです。 今調べてわかったことは 画像ファイルのパスとファイル名称の値をFilePathでセットして request.getParameterで値の取得をしているのですがこのときに ファイル名しかデータが引き渡されていないようです。 なぜこのような現象が起こるのだろうか? ちなみにパスの長さが原因かと思ってCドライブ直下でも試しましたがファイル名のみでした。 パス及びファイル名にスペースとかは含まれていません。

  • ssk38
  • ベストアンサー率44% (22/49)
回答No.2
noby-
質問者

補足

それだと思うのですが、jdkは1.6を使っています。 32bit,64bitで両方同じように動作するfileクラスはないのかなあ・・

回答No.1

どんなエラーが出るのか示さなければ、原因なんて分からない。

noby-
質問者

補足

以下のようなエラーが出ます。 ================================================================================== type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 java.lang.NullPointerException DmiFileArrangemet.ExtractFile(DmiFileArrangemet.java:142) MakePhoto6.doGet(MakePhoto6.java:111) MakePhoto6.doPost(MakePhoto6.java:189) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:404) org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:172) javax.servlet.http.HttpServlet.service(HttpServlet.java:637) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)

関連するQ&A