Java で Inputstream をバイト配列に変換
-
Java の
readAllBytes()
メソッドを用いて Inputstream をバイト配列に変換する -
Java の
toByteArray()
メソッドを用いて Inputstream をバイト配列に変換する -
Java の
write()
メソッドを使って Inputstream をバイト配列に変換する -
Java の
readAllBytes()
メソッドを用いて InputStream をバイト配列に変換する -
Java の
readFully()
メソッドを使って InputStream をバイト配列に変換する -
Java の
getBytes()
メソッドを用いて Inputstream をバイト配列に変換する - Java でカスタマイズしたコードを使って InputStream をバイト配列に変換する
-
Java の
toByteArray()
メソッドを用いて Inputstream をバイト配列に変換する
このチュートリアルでは、Java で Inputstream をバイト配列に変換する方法を紹介し、理解するためのコード例を挙げています。
InputStream
はバイトの Inputstream を表すすべてのクラスの抽象クラスでありスーパークラスです。Java はファイルや配列などの任意のソースからデータを読み込むために Inputstream を使用します。次に、このストリームをバイト配列に変換する方法を、Java の組み込みメソッドやカスタムコードを使って見ていきます。
この記事では、toByteArray()
、readAllBytes()
、readFully()
、getBytes()
、write()
などの組み込みメソッドを使用します。このテキストファイルには、Welcome to Delfstack
という一文が含まれており、これを読み込んでバイト配列に変換し、さらに文字列に変換して目的の結果を確認することができます。
Java の readAllBytes()
メソッドを用いて Inputstream をバイト配列に変換する
readAllBytes()
メソッドを使用して、すべてのデータをバイト配列にまとめることができます。このメソッドはバイト配列を返し、それを String
コンストラクタに渡してテキストデータを出力することができます。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
InputStream ins = new FileInputStream("abc.txt");
byte[] byteArray = ins.readAllBytes();
System.out.println(new String(byteArray));
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
Welcome to Delfstack
Java の toByteArray()
メソッドを用いて Inputstream をバイト配列に変換する
Apache ライブラリを使用する場合、IOUtils
クラスの toByteArray()
メソッドを使用して、すべてのデータをバイト配列に格納することができます。このメソッドは、テキストデータを出力するために String
コンストラクタにさらに渡すことができるバイト配列を返します。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
public class SimpleTesting {
public static void main(String[] args) {
try {
InputStream ins = new FileInputStream("abc.txt");
byte[] bytes = IOUtils.toByteArray(ins);
System.out.println(new String(bytes));
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
Welcome to Delftstack
Java の write()
メソッドを使って Inputstream をバイト配列に変換する
すべてのデータをバイト配列にまとめるには、ByteArrayOutputStream
クラスの write()
メソッドを利用することができます。このメソッドはバイト配列を返し、それを String
コンストラクタに渡してテキストデータを出力することができます。
package myjavaproject;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
InputStream ins = new FileInputStream("abc.txt");
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int read;
byte[] data = new byte[16384];
while ((read = ins.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, read);
}
System.out.println(new String(data));
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
Welcome to Delfstack
Java の readAllBytes()
メソッドを用いて InputStream をバイト配列に変換する
すべてのデータをバイト配列に変換するには、DataInputStream
クラスの readAllBytes()
メソッドを利用します。このメソッドはバイト配列を返し、これをさらに String
コンストラクタに渡してテキストデータを出力することができます。
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
DataInputStream dis = new DataInputStream(new FileInputStream(file));
byte[] bytes = dis.readAllBytes();
System.out.println(new String(bytes));
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
Welcome to Delftstack
Java の readFully()
メソッドを使って InputStream をバイト配列に変換する
全てのデータをバイト配列に変換するには、RandomAccessFile
クラスの readFully()
メソッドを利用することができます。このメソッドはバイト配列を返し、これを String
コンストラクタに渡すことでテキストデータを出力することができます。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
InputStream is = new FileInputStream(file);
RandomAccessFile raf = new RandomAccessFile(file, "r");
byte[] bytesData = new byte[(int) raf.length()];
raf.readFully(bytesData);
System.out.println(new String(bytesData));
is.close();
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
Welcome to Delfstack
Java の getBytes()
メソッドを用いて Inputstream をバイト配列に変換する
すべてのデータをバイト配列に変換するには、String
クラスの getBytes()
メソッドを使用します。このメソッドはバイト配列を返し、これを String
コンストラクタに渡してテキストデータを出力することができます。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.stream.Collectors;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
byte[] bytesData = {};
InputStream is = new FileInputStream(file);
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(is))) {
bytesData = buffer.lines().collect(Collectors.joining("\n")).getBytes();
}
System.out.println(new String(bytesData));
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
Welcome to Delftstack
Java でカスタマイズしたコードを使って InputStream をバイト配列に変換する
組み込みのメソッドを使用したくない場合は、このカスタマイズされたコードを使用して Inputstream をバイト配列に変換します。このコードはバイト配列を返し、これを String
コンストラクタに渡してテキストデータを出力することができます。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
byte[] bytesData = {};
bytesData = getBytesFromFile(new File(file));
System.out.println(new String(bytesData));
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file);
long length = file.length();
byte[] bytes = new byte[(int) length];
int offset = 0;
int numRead = 0;
while (
offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
offset += numRead;
}
if (offset < bytes.length) {
throw new IOException("Could not read file " + file.getName());
}
return bytes;
}
}
出力:
Welcome to Delfstack
Java の toByteArray()
メソッドを用いて Inputstream をバイト配列に変換する
すべてのデータをバイト配列に変換するには、ByteArrayOutputStream
クラスの toByteArray()
メソッドを利用することができます。このメソッドはバイト配列を返し、それをさらに String
コンストラクタに渡してテキストデータを出力することができます。
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
public static void main(String[] args) {
try {
String file = "abc.txt";
InputStream is = new FileInputStream(file);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
is.transferTo(byteArrayOutputStream);
byte[] bytesData = byteArrayOutputStream.toByteArray();
System.out.println(new String(bytesData));
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
出力:
Welcome to Delfstack