不仅 InputStream, OutputStream 包含了 getChannel 方法, 在 RandomAccessFile 中也包含了一个 getChannel 方法, 由 RandomAccessFile 返回的 FileChannel 的只读还是读写的 Channel 则取决于 RandomAccessFile 打开文件的模式, 例如下面的程序将会把 a.txt 文件的内容复制出来, 追加到该文件的后面.
ByteBuffer buffer = randomChannel.map(FileChannel.MapMode.READ_ONLY, 0, raf.length());
如果担心 Channel 对应的文件过大, 使用 map 方法一次将所有文件内容映射到内存中因其性能下降,也可以使用 Channel 和 Buffer 传统的多次取数的方式:
Charset 里提供了一个 availableCharset() 静态方法来获取当前 JDK 所支持的所有字符集, 所以程序可以使用如下程序来获取该 JDK 所支持的全部字符集.
import java.nio.charset.Charset;
import java.util.SortedMap;
public class CharsetTest
{
public static void main(String[] args)
{
// 获取全部字符集
SortedMap<String, Charset> map = Charset.availableCharsets();
for ( String alias : map.keySet() )
{
// 输出字符记得别名和对应的 Charset 对象
System.out.println(alias + "-------->" + map.get(alias) );
}
}
}
Big5-------->Big5
Big5-HKSCS-------->Big5-HKSCS
EUC-JP-------->EUC-JP
EUC-KR-------->EUC-KR
GB18030-------->GB18030
GB2312-------->GB2312
GBK-------->GBK
IBM-Thai-------->IBM-Thai
IBM00858-------->IBM00858
IBM01140-------->IBM01140
IBM01141-------->IBM01141
IBM01142-------->IBM01142
IBM01143-------->IBM01143
IBM01144-------->IBM01144
IBM01145-------->IBM01145
IBM01146-------->IBM01146
IBM01147-------->IBM01147
IBM01148-------->IBM01148
IBM01149-------->IBM01149
IBM037-------->IBM037
IBM1026-------->IBM1026
IBM1047-------->IBM1047
IBM273-------->IBM273
IBM277-------->IBM277
IBM278-------->IBM278
IBM280-------->IBM280
IBM284-------->IBM284
IBM285-------->IBM285
IBM297-------->IBM297
IBM420-------->IBM420
IBM424-------->IBM424
IBM437-------->IBM437
IBM500-------->IBM500
IBM775-------->IBM775
IBM850-------->IBM850
IBM852-------->IBM852
IBM855-------->IBM855
IBM857-------->IBM857
IBM860-------->IBM860
IBM861-------->IBM861
IBM862-------->IBM862
IBM863-------->IBM863
IBM864-------->IBM864
IBM865-------->IBM865
IBM866-------->IBM866
IBM868-------->IBM868
IBM869-------->IBM869
IBM870-------->IBM870
IBM871-------->IBM871
IBM918-------->IBM918
ISO-2022-CN-------->ISO-2022-CN
ISO-2022-JP-------->ISO-2022-JP
ISO-2022-JP-2-------->ISO-2022-JP-2
ISO-2022-KR-------->ISO-2022-KR
ISO-8859-1-------->ISO-8859-1
ISO-8859-13-------->ISO-8859-13
ISO-8859-15-------->ISO-8859-15
ISO-8859-2-------->ISO-8859-2
ISO-8859-3-------->ISO-8859-3
ISO-8859-4-------->ISO-8859-4
ISO-8859-5-------->ISO-8859-5
ISO-8859-6-------->ISO-8859-6
ISO-8859-7-------->ISO-8859-7
ISO-8859-8-------->ISO-8859-8
ISO-8859-9-------->ISO-8859-9
JIS_X0201-------->JIS_X0201
JIS_X0212-1990-------->JIS_X0212-1990
KOI8-R-------->KOI8-R
KOI8-U-------->KOI8-U
Shift_JIS-------->Shift_JIS
TIS-620-------->TIS-620
US-ASCII-------->US-ASCII
UTF-16-------->UTF-16
UTF-16BE-------->UTF-16BE
UTF-16LE-------->UTF-16LE
UTF-32-------->UTF-32
UTF-32BE-------->UTF-32BE
UTF-32LE-------->UTF-32LE
UTF-8-------->UTF-8
windows-1250-------->windows-1250
windows-1251-------->windows-1251
windows-1252-------->windows-1252
windows-1253-------->windows-1253
windows-1254-------->windows-1254
windows-1255-------->windows-1255
windows-1256-------->windows-1256
windows-1257-------->windows-1257
windows-1258-------->windows-1258
windows-31j-------->windows-31j
x-Big5-Solaris-------->x-Big5-Solaris
x-euc-jp-linux-------->x-euc-jp-linux
x-EUC-TW-------->x-EUC-TW
x-eucJP-Open-------->x-eucJP-Open
x-IBM1006-------->x-IBM1006
x-IBM1025-------->x-IBM1025
x-IBM1046-------->x-IBM1046
x-IBM1097-------->x-IBM1097
x-IBM1098-------->x-IBM1098
x-IBM1112-------->x-IBM1112
x-IBM1122-------->x-IBM1122
x-IBM1123-------->x-IBM1123
x-IBM1124-------->x-IBM1124
x-IBM1381-------->x-IBM1381
x-IBM1383-------->x-IBM1383
x-IBM33722-------->x-IBM33722
x-IBM737-------->x-IBM737
x-IBM834-------->x-IBM834
x-IBM856-------->x-IBM856
x-IBM874-------->x-IBM874
x-IBM875-------->x-IBM875
x-IBM921-------->x-IBM921
x-IBM922-------->x-IBM922
x-IBM930-------->x-IBM930
x-IBM933-------->x-IBM933
x-IBM935-------->x-IBM935
x-IBM937-------->x-IBM937
x-IBM939-------->x-IBM939
x-IBM942-------->x-IBM942
x-IBM942C-------->x-IBM942C
x-IBM943-------->x-IBM943
x-IBM943C-------->x-IBM943C
x-IBM948-------->x-IBM948
x-IBM949-------->x-IBM949
x-IBM949C-------->x-IBM949C
x-IBM950-------->x-IBM950
x-IBM964-------->x-IBM964
x-IBM970-------->x-IBM970
x-ISCII91-------->x-ISCII91
x-ISO-2022-CN-CNS-------->x-ISO-2022-CN-CNS
x-ISO-2022-CN-GB-------->x-ISO-2022-CN-GB
x-iso-8859-11-------->x-iso-8859-11
x-JIS0208-------->x-JIS0208
x-JISAutoDetect-------->x-JISAutoDetect
x-Johab-------->x-Johab
x-MacArabic-------->x-MacArabic
x-MacCentralEurope-------->x-MacCentralEurope
x-MacCroatian-------->x-MacCroatian
x-MacCyrillic-------->x-MacCyrillic
x-MacDingbat-------->x-MacDingbat
x-MacGreek-------->x-MacGreek
x-MacHebrew-------->x-MacHebrew
x-MacIceland-------->x-MacIceland
x-MacRoman-------->x-MacRoman
x-MacRomania-------->x-MacRomania
x-MacSymbol-------->x-MacSymbol
x-MacThai-------->x-MacThai
x-MacTurkish-------->x-MacTurkish
x-MacUkraine-------->x-MacUkraine
x-MS932_0213-------->x-MS932_0213
x-MS950-HKSCS-------->x-MS950-HKSCS
x-mswin-936-------->x-mswin-936
x-PCK-------->x-PCK
x-SJIS_0213-------->x-SJIS_0213
x-UTF-16LE-BOM-------->x-UTF-16LE-BOM
X-UTF-32BE-BOM-------->X-UTF-32BE-BOM
X-UTF-32LE-BOM-------->X-UTF-32LE-BOM
x-windows-50220-------->x-windows-50220
x-windows-50221-------->x-windows-50221
x-windows-874-------->x-windows-874
x-windows-949-------->x-windows-949
x-windows-950-------->x-windows-950
x-windows-iso2022jp-------->x-windows-iso2022jp