LectureMMP05
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Lecture]]
*Java プログラミング入門 [#de53d4fb]
このページは、学部2年生向け授業である、「マルチメディア...
のために用意しました。
(Wikiの仕様で大文字小文字が混在した英単語に疑問符?が追...
**第11章 入出力 [#hb3a05b8]
Javaの入出力は、ファイル、ネットワーク、キーボード、ディ...
(ファイル、ネットワーク、キーボード)
|
| 入力ストリーム
|
V
(Javaプログラム)
|
| 出力ストリーム
|
V
(ファイル、ネットワーク、ディスプレイ)
**バイトストリーム [#h69eaef6]
データを入出力するのがバイトストリームです。
ここでは、
- File Output Stream
- Data Output Stream
- File Input Stream
- Data Input Stream
を使ってみます。
*** File Output Streamを使ってバイト単位で書き出し [#e74b...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
基本的なインスタンスメソッドは、writeとcloseです。writeに...
write(int b)
は、int型の引数の下位1バイトを書き出します。以下のプログ...
import java.io.*;
public class FoutTest {
public static void main(String[] args) {
try {
FileOutputStream fout = new FileOutputStream("fout.da...
fout.write(1234);
fout.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
これでfout.datという名前のファイルができあがるはずです。 ...
hexdump fout.dat
してみてください
$ hexdump fout.dat
0000000 d2
0000001
1234は0x4d2だったのでその下1バイトが書き込まれました。
***Data Output StreamでJava整数型データを出力する [#l6a1b...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
Javaのいろいろなデータ型を書き出すことができます。
int, long, short, float, double, booleanなどのデータを書...
以下では、int型データを書き出しています。
なお、Data Output StreamはFile Output Streamの機能を利用...
Data Output Streamのコンストラクトには、File Output Strea...
なので2段階のコンストラクト作業になります。
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
これでdout.datという名前のファイルができあがるはずです。 ...
hexdump dout.dat
してみてください
e100:java siio$ hexdump dout.dat
0000000 00 00 00 64
0000004
int型は4バイトなので4バイトのファイルが出来上がっていま...
***整数を入出力する例 [#j899e2e7]
File/Data Output Streamにはそれぞれ対応したFile/Data Inpu...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
Javaのint型のデータで100をファイルに書いて、これを読み込...
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
FileInputStream finput = new FileInputStream("dout.da...
DataInputStream dinput = new DataInputStream(finput);
System.out.println(dinput.readInt());
dinput.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
***演習 [#iffeaa5d]
1から100までのint型の数値をwirteIntメソッドでファイルに書...
作ったファイルを
hexdump dout.dat
してみてください
解答例
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
int i;
try {
FileOutputStream fout = new FileOutputStream ("dout.d...
DataOutputStream dout = new DataOutputStream(fout);
for(i=1;i<101;i++) dout.writeInt(i);
dout.close();
FileInputStream fin = new FileInputStream ("dout.dat");
DataInputStream din = new DataInputStream(fin);
for(i=1;i<101;i++) System.out.println(din.readInt());
din.close();
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
**文字ストリーム [#x25291f2]
文字を読み書きするのが文字ストリームです。文字に適した処...
ReaderとWriterというクラスのグループがあります。
***文字列の書き出し [#a85525d6]
File Writerを使うと文字列を書き出すことができます。
close, flush, writeなどのメソッドがあります。
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
File Writerにはwrite()メソッドで、文字や、文字配列や、Str...
以下ではStringを書き出しています。
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
fwriter.write("Multimedia Programming 実習");
fwriter.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
また、Print Writerというクラスでは、System Out Printlnの...
Javaのいろいろなデータを書き出すのに便利です。
***printlnで書き出すプログラム [#efb2dbc9]
writer.txtというファイルに、
int x = 2020;
String s = "Multimedia Programming 実習";
というJavaの変数を、printlnで書き出すプログラムを作ってく...
//Print Writerをコンストラクトするためには、File Writerの...
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(2020);
pwriter.println("Multimedia Programming 実習");
pwriter.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
作ったファイルを hexdump してみてください
$ hexdump writer.txt
0000000 32 30 32 30 0a 4d 75 6c 74 69 6d 65 64 69 61 20
0000010 50 72 6f 67 72 61 6d 6d 69 6e 67 20 e5 ae 9f e7
0000020 bf 92 0a
0000023
hexdump -cでキャラクタ表示にもなります。
$ hexdump -c writer.txt
0000000 2 0 2 0 \n M u l t i m e ...
0000010 P r o g r a m m i n g ...
0000020 ? 222 \n ...
0000023
2020という数値は、int型なのですが、ASCII文字列に変換され...
「Multimedia Programming 実習」は、もともとが文字列なので...
int型などのデータを文字に自動変換してくれるところが、Prin...
Stringだけでしたら、File Writerの機能を使っても同様に書き...
***read Lineで改行コードまでを読み込む [#y3262833]
File ReaderはFile Writerと同様に文字列を読み込みます。
読み込む文字数を指定して読み込むことも可能です。
さらに便利なクラスがBuffered Readerで、こちらは改行文字ま...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
Buffered ReaderもFile Readerのインスタンスから作りますの...
writer.txtというテキストファイルがあるとして、これから1...
public class BufferedReaderTest{
public static void main(String[] args) {
try {
FileReader freader = new FileReader("writer.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp;
while( (tmp=breader.readLine() ) != null) {
System.out.println(tmp);
}
breader.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
このプログラムを参考にして、
先のPrint Writer Testに書き足して、
書き込んだデータを読み出して画面に表示するプログラムを作...
ヒント:
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(2020);
pwriter.println("Multimedia Programming 実習");
pwriter.close();
ここに書き足す
}
catch (IOException e) {
System.out.println(e);
}
}
}
解答例:
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(2020);
pwriter.println("Multimedia Programming 実習");
pwriter.close();
//writer.txtのファイルの中身をSystem.out.printlnで表示...
FileReader freader = new FileReader("writer.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp;
while( (tmp=breader.readLine() ) != null) {
System.out.println(tmp);
}
breader.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
**標準入出力 [#u09d26a5]
標準入出力には、
- キーボードからプログラムへの標準入力
- プログラムからディスプレイへの標準出力
- エラー出力
の3種類があります。これらはJavaのクラス変数として定義さ...
- System.in キーボードからプログラムへの標準入力
- System.out プログラムからディスプレイへの標準出力
- System.err エラー出力
それぞれの型は、
- System.in は Input Stream型
- System.out は Print Stream型
- System.err は Print Stream型
です。使えるメソッドはこちらで確認できます。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
***標準入力から読み込んだ文字列をそのままディスプレイに表...
import java.io.*;
public class StandardIOTest {
public static void main(String[] args) {
try {
//System.inからInputStreamReaderを作り、それからBuffe...
InputStreamReader ireader = new InputStreamReader (Sy...
BufferedReader breaderK = new BufferedReader(ireader);
System.out.println("文字列を入力してリターンを押して...
String line = breaderK.readLine();
System.out.println("あなたが入力した文字列" + line);
}
catch(IOException e) {
System.out.println(e);
}
}
}
***演習 [#m02d0351]
キーボードから1行入力された文字列から writer.txtという名...
//http://gyazo.com/f9aee7f492d574f870e85e2022df374c.png
e100:java siio$ java KeyToFile
Hello, これはテストです。
Hello, これはテストです。
e100:java siio$ cat writer.txt
Hello, これはテストです。
ヒント
import java.io.*;
public class KeyToFile {
public static void main(String[] args) {
try {
ここにプログラムを書く
}
catch(IOException e) {
System.out.println(e);
}
}
}
解答例
import java.io.*;
public class KeyToFile {
public static void main(String[] args) {
try {
InputStreamReader ireader = new InputStreamReader (Sy...
BufferedReader breaderK = new BufferedReader(ireader);
String line = breaderK.readLine();
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(line);
pwriter.close();
FileReader freader = new FileReader("writer.txt");
BufferedReader breaderF = new BufferedReader(freader);
String tmp=null;
while( (tmp=breaderF.readLine()) != null)
System.out.println(tmp);
breaderF.close();
}
catch(IOException e) {
System.out.println(e);
}
}
}
***http://www.ocha.ac.jp/の内容を表示するプログラムを書い...
http://gyazo.com/13044fdd9d372118a1f6fe93896eadb3.png
ヒント1
以下のリンクからURLクラスを選択して、調べましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
ヒント2
import java.net.*;
が必要です。
URL targetURL = new URL("http://www.ocha.ac.jp/");
でURLクラスのインスタンスが得られる。
InputStream istream = targetURL.openStream();
でこれからInputStreamのインスタンスが得られる。
InputStreamReader isreader = new InputStreamReader(istre...
でこれからInputStreamReaderのインスタンスが得られる。
BufferedReader breader = new BufferedReader( isreader );
でこれからBufferedReader のインスタンスが得られる。
ヒント3
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
ここにプログラムを書く
} catch (IOException e) {
System.out.println("error...");
}
}
}
ヒント4:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
ここで一行ずつ読み込む
} catch (IOException e) {
System.out.println("error...");
}
}
}
解答例:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
String line;
while((line=breader.readLine()) != null) System.out.p...
} catch (IOException e) {
System.out.println("error...");
}
}
}
***写真ファイルのダウンロード [#edb3e256]
http://is.ocha.ac.jp/~siio/cat.jpg
をダウンロードして、cat.jpgというファイルを作るプログラム...
データはテキストじゃなくて、バイナリーです。
ヒント1:
InputStreamのインスタンスに対してread()メソッドを使うと1...
1バイトのデータを書き出すなら、FileOutputStreamだけで可能...
ヒント2:
import java.io.*;
import java.net.*;
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
というインスタンスを作って、
istream.read()
で読んで、
fout.write(1バイト)
で書き出します。
解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int aData;
while((aData = istream.read()) != -1) fout.write(aDa...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
***本日のレポート [#o4524903]
上記のプログラム(URLJpeg.java, URLJpeg.class) を、出席番...
***写真読み込みの高速化 [#ia7ce1f8]
上記の例では写真データを1バイトずつ読み書きしていました。
InputStreamのメソッドを調べると、複数バイト単位で読み込む...
たとえば、1024バイトずつ読み書きすることで、処理速度が向...
そこで、複数バイト読み書きするよう、上記のプログラムを変...
実際にどの程度(実行速度にして何倍くらい)性能向上するか...
read
public int read(byte[] b)
throws IOException
入力ストリームから配列長さだけのバイト数を読み込もうとし...
実際に読み込まれたバイト数は整数として返されます。
戻り値は、バッファに読み込まれたバイトの合計数。ストリー...
を使って読みこみ、
write
public void write(byte[] b,
int off,
int len)
throws IOException
指定された byte 配列の、オフセット位置 off から始まる le...
を使ってください。
-ヒント
byte[] data = new byte[1024];
という配列を用意して、
int datalength;
while(( datalength=istream.read(data)) != -1) fout.writ...
とします。
-解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
//データはテキストじゃなくて、バイナリーです。
public class URLJpeg2 {
public static void main (String argv[]) {
byte[] data = new byte[1024];
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int datalength;
while(( datalength=istream.read(data)) != -1) fout.wr...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
ここでは1024バイトを読み込むことにしました。でも、InputSt...
available()
この入力ストリームのメソッドの次の呼出しによって、ブロッ...
これを使えば、適切な長さを見積もれるかもしれません。
***引数のURLをファイルにするプログラムを考えてみましょう ...
curlというコマンドがあります。
curl http://ocha.ac.jp/
などとすると、htmlが見られますし、
curl http://is.ocha.ac.jp/~siio/cat.jpg > cat.jpg
などとすると、ファイルとして保存できます。これに近いプロ...
***宿題 [#wb66142e]
上記の引数のURLをファイルにするプログラムを作ってください。
また、cat.jpgのファイル取得でまとめて読むことでどれくらい...
レポートにしてください。レポートの書式は任意です。(テキ...
これらのjava, class, レポートのファイルをまとめて、出席番...
終了行:
[[Lecture]]
*Java プログラミング入門 [#de53d4fb]
このページは、学部2年生向け授業である、「マルチメディア...
のために用意しました。
(Wikiの仕様で大文字小文字が混在した英単語に疑問符?が追...
**第11章 入出力 [#hb3a05b8]
Javaの入出力は、ファイル、ネットワーク、キーボード、ディ...
(ファイル、ネットワーク、キーボード)
|
| 入力ストリーム
|
V
(Javaプログラム)
|
| 出力ストリーム
|
V
(ファイル、ネットワーク、ディスプレイ)
**バイトストリーム [#h69eaef6]
データを入出力するのがバイトストリームです。
ここでは、
- File Output Stream
- Data Output Stream
- File Input Stream
- Data Input Stream
を使ってみます。
*** File Output Streamを使ってバイト単位で書き出し [#e74b...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
基本的なインスタンスメソッドは、writeとcloseです。writeに...
write(int b)
は、int型の引数の下位1バイトを書き出します。以下のプログ...
import java.io.*;
public class FoutTest {
public static void main(String[] args) {
try {
FileOutputStream fout = new FileOutputStream("fout.da...
fout.write(1234);
fout.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
これでfout.datという名前のファイルができあがるはずです。 ...
hexdump fout.dat
してみてください
$ hexdump fout.dat
0000000 d2
0000001
1234は0x4d2だったのでその下1バイトが書き込まれました。
***Data Output StreamでJava整数型データを出力する [#l6a1b...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
Javaのいろいろなデータ型を書き出すことができます。
int, long, short, float, double, booleanなどのデータを書...
以下では、int型データを書き出しています。
なお、Data Output StreamはFile Output Streamの機能を利用...
Data Output Streamのコンストラクトには、File Output Strea...
なので2段階のコンストラクト作業になります。
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
これでdout.datという名前のファイルができあがるはずです。 ...
hexdump dout.dat
してみてください
e100:java siio$ hexdump dout.dat
0000000 00 00 00 64
0000004
int型は4バイトなので4バイトのファイルが出来上がっていま...
***整数を入出力する例 [#j899e2e7]
File/Data Output Streamにはそれぞれ対応したFile/Data Inpu...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
Javaのint型のデータで100をファイルに書いて、これを読み込...
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
FileInputStream finput = new FileInputStream("dout.da...
DataInputStream dinput = new DataInputStream(finput);
System.out.println(dinput.readInt());
dinput.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
***演習 [#iffeaa5d]
1から100までのint型の数値をwirteIntメソッドでファイルに書...
作ったファイルを
hexdump dout.dat
してみてください
解答例
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
int i;
try {
FileOutputStream fout = new FileOutputStream ("dout.d...
DataOutputStream dout = new DataOutputStream(fout);
for(i=1;i<101;i++) dout.writeInt(i);
dout.close();
FileInputStream fin = new FileInputStream ("dout.dat");
DataInputStream din = new DataInputStream(fin);
for(i=1;i<101;i++) System.out.println(din.readInt());
din.close();
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
**文字ストリーム [#x25291f2]
文字を読み書きするのが文字ストリームです。文字に適した処...
ReaderとWriterというクラスのグループがあります。
***文字列の書き出し [#a85525d6]
File Writerを使うと文字列を書き出すことができます。
close, flush, writeなどのメソッドがあります。
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
File Writerにはwrite()メソッドで、文字や、文字配列や、Str...
以下ではStringを書き出しています。
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
fwriter.write("Multimedia Programming 実習");
fwriter.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
また、Print Writerというクラスでは、System Out Printlnの...
Javaのいろいろなデータを書き出すのに便利です。
***printlnで書き出すプログラム [#efb2dbc9]
writer.txtというファイルに、
int x = 2020;
String s = "Multimedia Programming 実習";
というJavaの変数を、printlnで書き出すプログラムを作ってく...
//Print Writerをコンストラクトするためには、File Writerの...
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(2020);
pwriter.println("Multimedia Programming 実習");
pwriter.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
作ったファイルを hexdump してみてください
$ hexdump writer.txt
0000000 32 30 32 30 0a 4d 75 6c 74 69 6d 65 64 69 61 20
0000010 50 72 6f 67 72 61 6d 6d 69 6e 67 20 e5 ae 9f e7
0000020 bf 92 0a
0000023
hexdump -cでキャラクタ表示にもなります。
$ hexdump -c writer.txt
0000000 2 0 2 0 \n M u l t i m e ...
0000010 P r o g r a m m i n g ...
0000020 ? 222 \n ...
0000023
2020という数値は、int型なのですが、ASCII文字列に変換され...
「Multimedia Programming 実習」は、もともとが文字列なので...
int型などのデータを文字に自動変換してくれるところが、Prin...
Stringだけでしたら、File Writerの機能を使っても同様に書き...
***read Lineで改行コードまでを読み込む [#y3262833]
File ReaderはFile Writerと同様に文字列を読み込みます。
読み込む文字数を指定して読み込むことも可能です。
さらに便利なクラスがBuffered Readerで、こちらは改行文字ま...
こちらで機能を確認しましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
Buffered ReaderもFile Readerのインスタンスから作りますの...
writer.txtというテキストファイルがあるとして、これから1...
public class BufferedReaderTest{
public static void main(String[] args) {
try {
FileReader freader = new FileReader("writer.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp;
while( (tmp=breader.readLine() ) != null) {
System.out.println(tmp);
}
breader.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
このプログラムを参考にして、
先のPrint Writer Testに書き足して、
書き込んだデータを読み出して画面に表示するプログラムを作...
ヒント:
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(2020);
pwriter.println("Multimedia Programming 実習");
pwriter.close();
ここに書き足す
}
catch (IOException e) {
System.out.println(e);
}
}
}
解答例:
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(2020);
pwriter.println("Multimedia Programming 実習");
pwriter.close();
//writer.txtのファイルの中身をSystem.out.printlnで表示...
FileReader freader = new FileReader("writer.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp;
while( (tmp=breader.readLine() ) != null) {
System.out.println(tmp);
}
breader.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
**標準入出力 [#u09d26a5]
標準入出力には、
- キーボードからプログラムへの標準入力
- プログラムからディスプレイへの標準出力
- エラー出力
の3種類があります。これらはJavaのクラス変数として定義さ...
- System.in キーボードからプログラムへの標準入力
- System.out プログラムからディスプレイへの標準出力
- System.err エラー出力
それぞれの型は、
- System.in は Input Stream型
- System.out は Print Stream型
- System.err は Print Stream型
です。使えるメソッドはこちらで確認できます。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
***標準入力から読み込んだ文字列をそのままディスプレイに表...
import java.io.*;
public class StandardIOTest {
public static void main(String[] args) {
try {
//System.inからInputStreamReaderを作り、それからBuffe...
InputStreamReader ireader = new InputStreamReader (Sy...
BufferedReader breaderK = new BufferedReader(ireader);
System.out.println("文字列を入力してリターンを押して...
String line = breaderK.readLine();
System.out.println("あなたが入力した文字列" + line);
}
catch(IOException e) {
System.out.println(e);
}
}
}
***演習 [#m02d0351]
キーボードから1行入力された文字列から writer.txtという名...
//http://gyazo.com/f9aee7f492d574f870e85e2022df374c.png
e100:java siio$ java KeyToFile
Hello, これはテストです。
Hello, これはテストです。
e100:java siio$ cat writer.txt
Hello, これはテストです。
ヒント
import java.io.*;
public class KeyToFile {
public static void main(String[] args) {
try {
ここにプログラムを書く
}
catch(IOException e) {
System.out.println(e);
}
}
}
解答例
import java.io.*;
public class KeyToFile {
public static void main(String[] args) {
try {
InputStreamReader ireader = new InputStreamReader (Sy...
BufferedReader breaderK = new BufferedReader(ireader);
String line = breaderK.readLine();
PrintWriter pwriter = new PrintWriter("writer.txt");
pwriter.println(line);
pwriter.close();
FileReader freader = new FileReader("writer.txt");
BufferedReader breaderF = new BufferedReader(freader);
String tmp=null;
while( (tmp=breaderF.readLine()) != null)
System.out.println(tmp);
breaderF.close();
}
catch(IOException e) {
System.out.println(e);
}
}
}
***http://www.ocha.ac.jp/の内容を表示するプログラムを書い...
http://gyazo.com/13044fdd9d372118a1f6fe93896eadb3.png
ヒント1
以下のリンクからURLクラスを選択して、調べましょう。
https://docs.oracle.com/javase/jp/8/docs/api/index.html
ヒント2
import java.net.*;
が必要です。
URL targetURL = new URL("http://www.ocha.ac.jp/");
でURLクラスのインスタンスが得られる。
InputStream istream = targetURL.openStream();
でこれからInputStreamのインスタンスが得られる。
InputStreamReader isreader = new InputStreamReader(istre...
でこれからInputStreamReaderのインスタンスが得られる。
BufferedReader breader = new BufferedReader( isreader );
でこれからBufferedReader のインスタンスが得られる。
ヒント3
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
ここにプログラムを書く
} catch (IOException e) {
System.out.println("error...");
}
}
}
ヒント4:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
ここで一行ずつ読み込む
} catch (IOException e) {
System.out.println("error...");
}
}
}
解答例:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
String line;
while((line=breader.readLine()) != null) System.out.p...
} catch (IOException e) {
System.out.println("error...");
}
}
}
***写真ファイルのダウンロード [#edb3e256]
http://is.ocha.ac.jp/~siio/cat.jpg
をダウンロードして、cat.jpgというファイルを作るプログラム...
データはテキストじゃなくて、バイナリーです。
ヒント1:
InputStreamのインスタンスに対してread()メソッドを使うと1...
1バイトのデータを書き出すなら、FileOutputStreamだけで可能...
ヒント2:
import java.io.*;
import java.net.*;
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
というインスタンスを作って、
istream.read()
で読んで、
fout.write(1バイト)
で書き出します。
解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int aData;
while((aData = istream.read()) != -1) fout.write(aDa...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
***本日のレポート [#o4524903]
上記のプログラム(URLJpeg.java, URLJpeg.class) を、出席番...
***写真読み込みの高速化 [#ia7ce1f8]
上記の例では写真データを1バイトずつ読み書きしていました。
InputStreamのメソッドを調べると、複数バイト単位で読み込む...
たとえば、1024バイトずつ読み書きすることで、処理速度が向...
そこで、複数バイト読み書きするよう、上記のプログラムを変...
実際にどの程度(実行速度にして何倍くらい)性能向上するか...
read
public int read(byte[] b)
throws IOException
入力ストリームから配列長さだけのバイト数を読み込もうとし...
実際に読み込まれたバイト数は整数として返されます。
戻り値は、バッファに読み込まれたバイトの合計数。ストリー...
を使って読みこみ、
write
public void write(byte[] b,
int off,
int len)
throws IOException
指定された byte 配列の、オフセット位置 off から始まる le...
を使ってください。
-ヒント
byte[] data = new byte[1024];
という配列を用意して、
int datalength;
while(( datalength=istream.read(data)) != -1) fout.writ...
とします。
-解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
//データはテキストじゃなくて、バイナリーです。
public class URLJpeg2 {
public static void main (String argv[]) {
byte[] data = new byte[1024];
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int datalength;
while(( datalength=istream.read(data)) != -1) fout.wr...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
ここでは1024バイトを読み込むことにしました。でも、InputSt...
available()
この入力ストリームのメソッドの次の呼出しによって、ブロッ...
これを使えば、適切な長さを見積もれるかもしれません。
***引数のURLをファイルにするプログラムを考えてみましょう ...
curlというコマンドがあります。
curl http://ocha.ac.jp/
などとすると、htmlが見られますし、
curl http://is.ocha.ac.jp/~siio/cat.jpg > cat.jpg
などとすると、ファイルとして保存できます。これに近いプロ...
***宿題 [#wb66142e]
上記の引数のURLをファイルにするプログラムを作ってください。
また、cat.jpgのファイル取得でまとめて読むことでどれくらい...
レポートにしてください。レポートの書式は任意です。(テキ...
これらのjava, class, レポートのファイルをまとめて、出席番...
ページ名: