2

テキストファイルへのアクセスが必要なシンプルなAndroidアプリケーションを開発しています! filenotfoundexceptionFile コンストラクターでファイルの絶対パスを指定したのに取得してしまいます。私のコードは

`File fr = new File("C:/mywork1/Dictionary/src/com/praveen/dictionary/vsn.txt");
                System.out.println(fr.getAbsolutePath());
                Scanner bb = new Scanner(fr);
                System.out.println(fr.exists());
                while((strf = bb.nextLine()) != null)
                {...

以前のいくつかの質問には、AssetsManager代わりに使用することを提案する回答があります。私はそれを試しました。

AssetManager assetManager = Context.getAssets();
InputStream in = null;
in = assetManager.open("vsn.txt");

このコードで得られるエラーは

「非静的変数への静的参照は作成できません」

最初の行で。この問題を解決してください.onCreateメソッドを使用しているため、throws句を使用することさえできません! 現在の作業ディレクトリにテキスト ファイルが含まれるように、実行構成の設定を変更しました。ありがとう

4

5 に答える 5

2

c:\Android は Linux をベースにしているため、ドライブ文字などのファイルシステムは使用しません。

ファイルを開く場合は、ファイルの場所によって異なります。assets ディレクトリにある場合は、AssetsManager. 試した方法で実行できる理由は、オブジェクトではなくクラスでメソッドを呼び出すためです。コードがActivity単純な do の場合:

getAssets().open("vsn.txt");

フラグメントで次のことを行います。

getActivity().getAssets().open("vsn.txt");

外部ファイル ディレクトリへのアクセスが必要な場合は、オブジェクトgetExternalFilesDir(null)を呼び出しますContext

于 2013-06-10T07:31:49.633 に答える
2

Android デバイスは、C: ディレクトリにあるファイルを保存または読み取りません。

プロジェクト内の Resources フォルダーに移動し、そのように含める必要があります。

于 2013-06-10T07:26:34.593 に答える
1

Android アプリケーションでファイルにアクセスするには、そのファイルをプロジェクトの「assets」フォルダーに配置します。その後、getAssets() を使用してこのファイルを使用できます。次のコードを使用して、アセットからファイルを読み取ることができます

try {
    BufferedReader reader = new BufferedReader(
        new InputStreamReader(getAssets().open("filename.txt")));

    // do reading, usually loop until end of file reading  
    String mLine = reader.readLine();
    while (mLine != null) {
       //process line
       ...
       mLine = reader.readLine(); 
    }

    reader.close();
} catch (IOException e) {
    //log the exception
}
于 2013-06-10T07:34:36.177 に答える
0

外部ストレージ SD カードを使用してファイルの作成と削除を行います。標準の Java I/O を使用します。Environment.getExternalStorageDirectory() を使用して、外部ストレージ (一部のデバイスでは SD カード) のルートにアクセスします。

以下は、プログラムでファイルを移動する関数です

マニフェストに正しい権限を設定する

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


private void moveFile(String inputPath, String inputFile, String outputPath) {

    InputStream in = null;
    OutputStream out = null;
    try {

        //create output directory if it doesn't exist
        File dir = new File (outputPath); 
        if (!dir.exists())
        {
            dir.mkdirs();
        }


        in = new FileInputStream(inputPath + inputFile);        
        out = new FileOutputStream(outputPath + inputFile);

        byte[] buffer = new byte[1024];
        int read;
        while ((read = in.read(buffer)) != -1) {
            out.write(buffer, 0, read);
        }
        in.close();
        in = null;

            // write the output file
            out.flush();
        out.close();
        out = null;

        // delete the original file
        new File(inputPath + inputFile).delete();  


    } 

         catch (FileNotFoundException fnfe1) {
        Log.e("tag", fnfe1.getMessage());
    }
          catch (Exception e) {
        Log.e("tag", e.getMessage());
    }

}

ファイルを削除するには

private void deleteFile(String inputPath, String inputFile) {
    try {
        // delete the original file
        new File(inputPath + inputFile).delete();  


    }
   catch (FileNotFoundException fnfe1) {
        Log.e("tag", fnfe1.getMessage());
    }
    catch (Exception e) {
        Log.e("tag", e.getMessage());
    }
}

コピーする

private void copyFile(String inputPath, String inputFile, String outputPath) {

    InputStream in = null;
    OutputStream out = null;
    try {

        //create output directory if it doesn't exist
        File dir = new File (outputPath); 
        if (!dir.exists())
        {
            dir.mkdirs();
        }


        in = new FileInputStream(inputPath + inputFile);        
        out = new FileOutputStream(outputPath + inputFile);

        byte[] buffer = new byte[1024];
        int read;
        while ((read = in.read(buffer)) != -1) {
            out.write(buffer, 0, read);
        }
        in.close();
        in = null;

            // write the output file (You have now copied the file)
            out.flush();
        out.close();
        out = null;        

    }  catch (FileNotFoundException fnfe1) {
        Log.e("tag", fnfe1.getMessage());
    }
            catch (Exception e) {
        Log.e("tag", e.getMessage());
    }

}
于 2013-06-10T07:30:56.287 に答える
0

テキスト ファイル @sdcard または @assets フォルダーを Android アプリケーションに配置できます。sdcard からファイル にアクセスするには、Android に言及します: SD カード内のファイルにアクセスする方法& このリンクの assests フォルダーからファイルにアクセスする方法Android - アセットからファイルにアクセス \ PDF 表示

于 2013-06-10T07:30:58.943 に答える