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

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

ただいまの
回答率

91.47%

  • Android

    5052questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

【androidstudio】OneDrive上に保存しているtxtファイルの中身の書き換えとフォルダ名の変更方法について

解決済

回答 2

投稿 2016/11/22 14:09 ・編集 2016/11/22 15:46

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

mononobe

score 14

Android Studio にてOneDrive上に保存しているtxtファイルの中身の書き換えとフォルダ名の変更方法について教えていただきたく思います。

具体的には、

/////////////////////////////////////////////////////////////

アプリ起動

ボタンを押す

ボタンが押されたら
OneDrive上にもともと置いてあるtest1.txt(中に特に記述はない。
の中身を1とだけ書き換え、上書き保存。
test1.txtの名前をtest2.txtへと書き換える。

/////////////////////////////////////////////////////////////

といったようなアプリを作成したいです。

/////////////////////////////////////////////////////////////

2016/11/22追記

Android 向けの OneDrive ピッカーおよぴセーバー

↑上記のサイトの
"onedrive-picker-android"
に入っている
"SaverSample"内の"SaverMain.java"
を利用すれば、アプリ上からテキストファイルの内容を指定し、保存することができる。というのはわかったのですが、どの文章でテキストフォルダ内の内容を決めているのかがわかりません。

SaverMain.javaソースコード

コード

// ------------------------------------------------------------------------------
// Copyright (c) 2014 Microsoft Corporation
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//  THE SOFTWARE.
// ------------------------------------------------------------------------------

package com.example.onedrivesdk.saversample;

import java.io.*;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.*;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;

import com.microsoft.onedrivesdk.saver.*;

/**
 * Activity that shows how the OneDrive SDK can be used for file saving
 * 
 * @author pnied
 */
public class SaverMain extends Activity {

    /**
     * The default file size
     */
    private static final int DEFAULT_FILE_SIZE_KB = 100;

    /**
     * Registered Application id for OneDrive {@see http://go.microsoft.com/fwlink/p/?LinkId=193157}
     */
    private static final String ONEDRIVE_APP_ID = "48122D4E";

    /**
     * The onClickListener that will start the OneDrive Picker
     */
    private final OnClickListener mStartPickingListener = new OnClickListener() {
        @Override
        public void onClick(final View v) {
            final Activity activity = (Activity) v.getContext();
            activity.findViewById(R.id.result_table).setVisibility(View.INVISIBLE);

            final String filename = ((EditText)activity.findViewById(R.id.file_name_edit_text))
                    .getText().toString();
            final String fileSizeString = ((EditText)activity.findViewById(R.id.file_size_edit_text))
                    .getText().toString();
            int size;
            try {
                size = Integer.parseInt(fileSizeString);
            } catch (final NumberFormatException nfe) {
                size = DEFAULT_FILE_SIZE_KB;
            }

            // Create a file
            final File f = createExternalSdCardFile(filename, size);

            // Start the saver
            mSaver.startSaving(activity, filename, Uri.parse("file://" + f.getAbsolutePath()));
        }
    };

    /**
     * The OneDrive saver instance used by this activity
     */
    private ISaver mSaver;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_saver_main);

        // Create the picker instance
        mSaver = Saver.createSaver(ONEDRIVE_APP_ID);

        // Add the start saving listener
        findViewById(R.id.startSaverButton).setOnClickListener(mStartPickingListener);
    }

    @Override
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
        // Check that we were able to save the file on OneDrive
        final TextView overallResult = (TextView) findViewById(R.id.overall_result);
        final TextView errorResult = (TextView) findViewById(R.id.error_type_result);
        final TextView debugErrorResult = (TextView) findViewById(R.id.debug_error_result);

        try {
            mSaver.handleSave(requestCode, resultCode, data);
            overallResult.setText(getString(R.string.overall_result_success));
            errorResult.setText(getString(R.string.error_message_none));
            debugErrorResult.setText(getString(R.string.error_message_none));
        } catch (final SaverException e) {
            overallResult.setText(getString(R.string.overall_result_failure));
            errorResult.setText(e.getErrorType().toString());
            debugErrorResult.setText(e.getDebugErrorInfo());
        }
        findViewById(R.id.result_table).setVisibility(View.VISIBLE);
    }

    /**
     * Creates an file on the SDCard
     * @param filename The name of the file to create
     * @param size The size in KB to make the file
     * @return The {@link File} object that was created
     */
    private File createExternalSdCardFile(final String filename, final int size) {
        final int bufferSize = 1024;
        final int alphabetRange = 'z' - 'a';
        File file = null;
        try {
            file = new File(Environment.getExternalStorageDirectory(), filename);
            final FileOutputStream fos = new FileOutputStream(file);

            // Create a 1 kb size buffer to use in writing the temp file
            byte[] buffer = new byte[bufferSize];
            for (int i = 0; i < buffer.length; i++) {
                buffer[i] = (byte)('a' + i % alphabetRange);
            }

            // Write out the file, 1 kb at a time
            for (int i = 0; i < size; i++) {
                fos.write(buffer, 0, buffer.length);
            }

            fos.close();
        } catch (final IOException e) {
            Toast.makeText(this, "Error when creating the file: " + e.getMessage(), Toast.LENGTH_LONG).show();
        }
        return file;
    }
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////``` 2016/11/22追記2 Y.H.さんへの返信

このサンプルプログラムを実行した場合、'a'から'z'まで指定キロバイトまで延々と出力されたテキストファイルができるわけなのですが、例えばテキストファイルの中身を1とだけ入れたい場合は、

コード  
byte[] buffer = new byte[bufferSize];   
for (int i = 0; i < buffer.length; i++) {   
buffer[i] = (byte)('a' + i % alphabetRange);   
}


のbuffer[i] = (byte)(このぶぶんを変更);
すればよいのでしょうか?

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/11/22 15:15

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

checkベストアンサー

+1

もしかしてOneDriveは関係なく単純にファイルにテキストを書き込む方法がわからないのでしょうか?

どの文章でテキストフォルダ内の内容を決めているのかがわかりません。

「テキストファイル内の内容」でしょうか?
であればcreateExternalSdCardFile() で普通にfileをOpenして出力する文字列('a'から'z'までを繰り返した文字列)を作って出力してcloseしてますよね?

例えばテキストファイルの中身を1とだけ入れたい場合は、

以下で'1'のみファイルに出力します。(コードは未検証なので間違ってたら適当に直してください。)
この要件を受けて createExternalSdCardFile() の 第2引数 size が不要なので削除してます。

private File createExternalSdCardFile(final String filename) { 
    File file = null; 

    try { 
        file = new File(Environment.getExternalStorageDirectory(), filename); 
        final FileOutputStream fos = new FileOutputStream(file);

        // Create a 1 kb size buffer to use in writing the temp file 
        byte[] buffer = new byte[1]; 
        buffer[0] = (byte)('1'); 

        fos.write(buffer, 0, buffer.length); 

        fos.close(); 
    } catch (final IOException e) { 
        Toast.makeText(this, "Error when creating the file: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
    }
    return file; 
}

投稿 2016/11/22 15:31

編集 2016/11/22 16:04

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/22 15:37

    失礼いたしました。テキストファイル内の内容です。

    再度不明点を更新しますので確認お願いします

    キャンセル

  • 2016/11/22 16:13

    解答ありがとうございました!
    詰まっていた問題が一つ解決できましたが、まだ疑問点がありますので再度質問を立て直してきますね。

    キャンセル

0

OneDriveについてまったく調べていないなら先に調べてから質問しましょう。
調べているならコードを書いてからわからないところを質問しましょう。

投稿 2016/11/22 15:08

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/22 15:23

    具体的な内容に質問を更新しました。ご教授よろしくお願いします

    キャンセル

  • 2016/11/22 15:37

    他の質問のコードとあなたのコードで表示のされ方が違うことに気がつきませんか?コードはコード用の記述を使ってください。

    キャンセル

  • 2016/11/22 15:39

    ご指摘ありがとうございます。ほかの質問者様の表示を確認したことがなかったため気が付きませんでした。修正いたします。

    キャンセル

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

ただいまの回答率

91.47%

関連した質問

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

  • Android

    5052questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • トップ
  • Androidに関する質問
  • 【androidstudio】OneDrive上に保存しているtxtファイルの中身の書き換えとフォルダ名の変更方法について