質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Java

    13786questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Javaアプレット

    37questions

    Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。

Javaでディレクトリが作成されない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 149

aiueoaiueoaiue

score 74

実現したい事

Javaで画像をアプレットに表示させて、ボタンを押すと新しくフォルダを作り、その中に画像を別名で保存するというソースを書いたのですが、ボタンを押すとエラーっぽいのが表示されます。サイトを参考に.java.policyを作ったりしたのですが相変わらずアクセスが拒否されたままでした。前回も質問したのですが、アプレットはやめとけとかいう本末転倒な回答は除いて、解決策の分かる方回答お願いします。

ソース

/*<applet code = "Image05.class" archive = "Image05.jar" width = "240" height = "240"></applet>*/

import java.awt.*;//ウィンドウの表示に必要
import java.awt.event.*;//ウィンドウのイベント処理に必要
import java.awt.image.*;//Imageの取り扱いに必要
import java.io.*;//Imageの読み込み
import javax.imageio.*;//Imageの読み込み
import java.applet.*;

public class Image05 extends Applet implements ActionListener{

    //Buttonの作成と設定
    Button button=new Button("イメージの保存");//Buttonの作成
    BufferedImage image;
    @Override
    public void init(){
        setBackground(Color.WHITE);
    setLayout(new BorderLayout());
    add(this.button, BorderLayout.NORTH);
       this.button.addActionListener(this);//Listenerの追加(イベントの処理先を指定)
    image=loadImage("test.jpg");
    }

  //イメージをファイルから取り込む
  // 引数 - Imgaeのファイル名
  // 戻り値 - 読み込んだイメージ
  BufferedImage loadImage(String name){
    try{
      FileInputStream in=new FileInputStream(name);//FileInputStreamを作る
      BufferedImage rv=ImageIO.read(in);//イメージを取り込む
      in.close();//閉じる
      return rv;//戻り値に読み込んだイメージをセット
    }catch(IOException e){
      //エラー時の処理(エラーを表示)しnullを返す
      System.out.println("Err e="+e);//エラーを表示
      return null;//null を返す
    }
  }

  //表示の必要があれば実行されるメソッド
  @Override
  public void paint(Graphics g){
    BufferedImage bufferImage=makeImage();//表示用のイメージを作成
    g.drawImage(bufferImage,0,0,this);//作成したイメージを画面に描く
  }

  //描画や保存に必要なイメージを作成する。
  BufferedImage makeImage(){
    int x2=getWidth();//画面の幅を取得
    int y2=getHeight();//画面の高さを取得
    int iw=image.getWidth(this);//イメージの幅を取得
    int ih=image.getHeight(this);//イメージの高さを取得
    int x0=0;//画面左位置
    int y0=0;//画面上端位置
    int x1=x2/2;//画面中央位置(横)
    int y1=y2/2;//画面中央位置(縦)

    BufferedImage bufferImage=new BufferedImage(x2,y2,BufferedImage.TYPE_INT_BGR);//Buffer用イメージを作成
    Graphics2D g2=bufferImage.createGraphics();//描画用のGraphics2D型変数g2を取得


    g2.setBackground(Color.WHITE);//背景色を白で指定
    g2.clearRect(0, 0, x2, y2);//全体をクリア
    g2.drawImage(image, x0,y0,x2,y2,Color.WHITE,this);//画面の左上にイメージを縮小して表示
    g2.dispose();//不要になったグラフィクスは廃却

    return bufferImage;//作成したイメージを戻り値として返す
  }


  //イメージの保存
  //  image - 保存するイメージ
  //  fileName-保存先のファイル
  //  format - 書式(bmp,BMP.gif,GIF,jpg,JPG,JPEGなどが可能)
  //  戻り値 成功(true),失敗(false)
  boolean saveImage(BufferedImage image,String fileName,String format){
        File newdir = new File("./aoi");
    newdir.mkdir();
    if (newdir.mkdir()){
      System.out.println("ディレクトリの作成に成功しました");
    }else{
      System.out.println("ディレクトリの作成に失敗しました");
    }
    try{
      OutputStream out=new FileOutputStream(fileName);//ファイルとアプリを繋ぐ
      ImageIO.write(image, format, out);//指定の形式で出力
      return true;//成功したらtrueを返す。
    }catch(IOException e){
      //例外処理が発生したらエラーをコンソールに出して、falseを返す
      System.out.println("Err="+e);//エラー出力
      return false;//falseを返す
    }
  }
    //ボタンが操作されやらイメージの保存を実行
    @Override
    public void actionPerformed(ActionEvent e) {
      if(e.getSource() == this.button){
          BufferedImage image=makeImage();//イメージの作成
          saveImage(image, "./aoi/out.jpg", "JPG");//保存
      }
    }
}

エラー内容

java.security.policy: file:/C:/Users/ユーザ名/.java.policyの構文解析エラー:
        行1: [;]ではなく[?grant]が検出されました
Exception in thread "AWT-EventQueue-1" java.security.AccessControlException: access denied ("java.io.FilePermission" ".\aoi" "write")
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
        at java.security.AccessController.checkPermission(AccessController.java:884)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.SecurityManager.checkWrite(SecurityManager.java:979)
        at java.io.File.mkdir(File.java:1311)
        at Image05.saveImage(Image05.java:78)
        at Image05.actionPerformed(Image05.java:99)
        at java.awt.Button.processActionEvent(Button.java:409)
        at java.awt.Button.processEvent(Button.java:377)
        at java.awt.Component.dispatchEventImpl(Component.java:4889)
        at java.awt.Component.dispatchEvent(Component.java:4711)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
        at java.awt.EventQueue$4.run(EventQueue.java:733)
        at java.awt.EventQueue$4.run(EventQueue.java:731)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

試したこと

javac -encoding UTF8 Image05.java でコンパイル
jar cvf Image05.jar Image05.class でjarファイル作成
appletviewer Image05.java でアプレット実行

.java.policy

grant codeBase "file:/C:/Users/ユーザ名/Desktop/-" {
    permission java.security.AllPermission;
    permission java.io.AllPermission;
};

参考サイト

http://a4dosanddos.hatenablog.com/entry/2013/07/04/233122

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Java LabelにImageiconを大きく表示させる

    前提・実現したいこと   Java LabelにImageiconを代入し、表示させたいのですが、アイコンのサイズとして表示されます。 なので、少し拡大をして表示させるにはどの

  • 解決済

    国旗を表示させたい(続き)

    前提・実現したいこと btn [0][1][2]をクリックすると、それに対応した国旗が表示されるようにしたい。 ソースコード import java.awt.*;   

  • 解決済

    javaで特定の文字を打った時JLabelに画像表示したい

    textFieldに文字"test"と打った時 JLabelに画像test.jpgを表示したいです

  • 解決済

    【Java】BuffredImageからInputStreamを生成する方法

    とても初歩的な質問なのですが、 BuffredImage型をInputStream型へ変換したいと考えております。 方法は問いませんが、なるべく簡潔がよいです。 調べてもよく

  • 受付中

    【Java】画像のリサイズについて

    Javaを用いて画像のリサイズを行いたいです。 現状はリサイズはできているのですが、 リサイズ後の画質が悪く、画質の劣化が少ない方法を探しております。 リサイズの参考にし

  • 解決済

    java eclipseについて

    java eclipseでスライドパズルを作成しています。 9枚の画像で作成しており、現在は9枚の画像を実行するたびにランダムで表示するところまでいきました。 その後ですが9枚

  • 受付中

    java apllet 音源再生

    番号リスト 音楽をappletで再生したい. ボタンstart stopをつけ動作させたい。 実行したこと 形式wmv サイズ55.0 MB (57,710,783 バイト) 音

  • 受付中

    Javaでフレーム内にランダムに数値を表示させたい

    前提・実現したいこと スロットゲームにてボタン入力後ターミナルではなくフレームにランダムな3桁を入力したい。 あわよくば数値によっては言葉を表示させたい。 777ならばBig Bo

同じタグがついた質問を見る

  • Java

    13786questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Javaアプレット

    37questions

    Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。