0

このプログラムは、ターミナル ウィンドウに「例外」を表示します。prevData.txt は、コードに示されている場所にあります。私の問題は何ですか?

Bluejを使用しています。他に何かご質問は?問い合わせてください。

import java.io.*;

public class prevDataReset{

public static void main(String args[]){

 try{
  byte bWrite [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

  OutputStream os = new FileOutputStream("C:/prevData.txt");
  for(int x=0; x < bWrite.length ; x++){
     os.write( bWrite[x] ); // writes the bytes
  }
  os.close();

  InputStream is = new FileInputStream("C:/prevData.txt");
  int size = is.available();

  for(int i=0; i< size; i++){
     System.out.print((double)is.read() + "  ");
  }
  is.close();
  }catch(IOException e){
  System.out.print("Exception");
  } 
  }
  }
4

3 に答える 3

2

わたしにはできる。「C:\」に書き込むための書き込み権限がないことをお勧めします。user.dir代わりにシステムプロパティを使用してみてください...

何かのようなもの...

public class SimpleTest {

    public static void main(String args[]) {

        OutputStream os = null;
        InputStream is = null;
        try {
            String userDir = System.getProperty("user.dir");
            byte bWrite[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

            try {
                os = new FileOutputStream(userDir + File.separator + "prevData.txt");
                for (int x = 0; x < bWrite.length; x++) {
                    os.write(bWrite[x]); // writes the bytes
                }
            } finally {
                try {
                    os.close();
                } catch (Exception e) {
                }
            }

            try {
                is = new FileInputStream(userDir + File.separator + "prevData.txt");
                int size = is.available();

                for (int i = 0; i < size; i++) {
                    System.out.print((double) is.read() + "  ");
                }
            } finally {
                try {
                    is.close();
                } catch (Exception e) {
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
于 2012-11-19T04:11:29.350 に答える
0

このコードを実行し、catchブロックを変更すると、次のエラーが発生するe.printStackTrace();だけではありません。System.out.println("Exception");

java.io.FileNotFoundException: C:\prevData.txt (Access is denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
    at fileexception.prevDataReset.main(prevDataReset.java:11)

ディレクトリが書き込み/読み取り可能であることを確認して、再試行してください。

于 2012-11-19T04:13:09.947 に答える
0

やってみました


import java.io.*;

public class prevDataReset {
    public static void main(String args[]){

         try{
              byte bWrite [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

              OutputStream os = new FileOutputStream("C:/prevData.txt");
              for(int x=0; x < bWrite.length ; x++){
                 os.write( bWrite[x] ); // writes the bytes
              }
              os.close();

              InputStream is = new FileInputStream("C:/prevData.txt");
              int size = is.available();

              for(int i=0; i < size; i++){
                 System.out.print((double)is.read() + "  ");
              }
              is.close();
          }
          catch(IOException e){
           System.out.print("Exception");
          }
    }
}


そして、それはうまくいきます。
問題はそのコード スニペットにはありません。

お役に立てれば。

于 2012-11-19T04:22:04.393 に答える