社区
Java SE
帖子详情
getChannel()问题
zhongguo99
2004-07-31 11:14:06
我想用两个getChannel()分别处理两个文件
FileChannel fc = RAFile.getChannel();
FileChannel fc1 = RATxt.getChannel();
可是当我用fc.size()取来的值却和fc1.size()的值相等,为什么啊?有什么办法处理这个问题呢?我要将这两个文件一起处理
...全文
1028
12
打赏
收藏
getChannel()问题
我想用两个getChannel()分别处理两个文件 FileChannel fc = RAFile.getChannel(); FileChannel fc1 = RATxt.getChannel(); 可是当我用fc.size()取来的值却和fc1.size()的值相等,为什么啊?有什么办法处理这个问题呢?我要将这两个文件一起处理
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhongguo99
2004-08-03
打赏
举报
回复
怎么给不了分啊?说我回贴跟大于给分次数,若是这个给不了分,向大家说对不起了
zhongguo99
2004-08-03
打赏
举报
回复
我将文本的改成只读的,就解决问题了 :)
registered
2004-08-03
打赏
举报
回复
RAFile = new RandomAccessFile("d:\\1.bmp", "rw");//读入图片
RATxt = new RandomAccessFile("d:\\1.txt", "rw");//读入文本
你把文件名改的复杂点试试
比如: bmp.bmp; txt.txt
按说文件不同 size 不会相同
wpz0k
2004-08-02
打赏
举报
回复
继续关注此问题,顶一下。
zhongguo99
2004-08-02
打赏
举报
回复
谢谢 nhk_csdn(我呢)
我已经改成mbb1 = fc1.map(FileChannel.MapMode.READ_WRITE, 0, fcl.size());了
这个错误应当只影响到mbb1,而fcl.size(),和fc.size()的大小还是一样,还是找不到错误在哪里
nhk_csdn
2004-08-02
打赏
举报
回复
没仔细看你的逻辑
但
try {
mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size());
mbb1 = fc1.map(FileChannel.MapMode.READ_WRITE, 0, fc.size());
}
应该是:
mbb1 = fc1.map(FileChannel.MapMode.READ_WRITE, 0, fcl.size());
吧
zhongguo99
2004-08-02
打赏
举报
回复
自己顶一次
zhongguo99
2004-08-01
打赏
举报
回复
package registeredmethod;
import javax.swing.UIManager;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.MappedByteBuffer;
import java.io.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Get {
boolean packFrame = false;
//Main method
public static void main(String[] args) {
RandomAccessFile RAFile = null;
RandomAccessFile RATxt = null;
try {
RAFile = new RandomAccessFile("d:\\1.bmp", "rw");//读入图片
RATxt = new RandomAccessFile("d:\\1.txt", "rw");//读入文本
}
catch (FileNotFoundException ex) {
}
FileChannel fc = RAFile.getChannel();//创建图象操作通道
FileChannel fc1 = RATxt.getChannel();//创建文本操作通道
MappedByteBuffer mbb = null;
MappedByteBuffer mbb1 = null;
try {
mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size());
mbb1 = fc1.map(FileChannel.MapMode.READ_WRITE, 0, fc.size());
}
catch (IOException ex1) {
ex1.printStackTrace();
}
int textsize = 0;
try {
textsize= (int) fc1.size();//得到文本大小
}
catch (IOException ex3) {
ex3.printStackTrace();
}
try {
if (fc.size() > (fc1.size() * 8 - 55)) {//比较图片和文本的大小
for (int nom = 0; nom < textsize; nom++) {//符合情况则循环
byte src1 = mbb1.get(textsize);//得到文本第textsize个字节
byte[] bittxt = new byte[8];
for (int i = 0; i < 8; i++) {
if ( (src1 & (1 << i)) > 0) {
bittxt[i] = 1;
}
else {
bittxt[i] = 0;
}
}//得到位
for (int j = 0; j < 8; j++) {
int n = 55;
byte src = mbb.get(n);//取得图象的第n个字节
//取得位
byte[] bits = new byte[8];
for (int i = 0; i < 8; i++) {
if ( (src & (1 << i)) > 0) {
bits[i] = 1;
}
else {
bits[i] = 0;
}
byte bit0 = (byte) (bits[7] ^ bits[6] ^ bits[5]
^ bits[4] ^ bits[3] ^ bits[2] ^ bits[1] ^
bittxt[j]);//异或操作
src &= (byte) 0xFE;
src = (byte) (src | bit0);
mbb.put(n, src);//将操作后的数值插回到第n个字节的第0位中
n++;
System.out.println(bittxt[j]);
}
}
}
try {
fc.close();
}
catch (IOException ex2) {
ex2.printStackTrace();
}
}
}
catch (Exception ex4) {
ex4.printStackTrace();
}
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
e.printStackTrace();
}
new Get();
}
}
allen830826
2004-07-31
打赏
举报
回复
对啊
文件大小不一样
返回的之怎么会一样呢
zhongguo99
2004-07-31
打赏
举报
回复
不相等,1个1M一个才20K
allen830826
2004-07-31
打赏
举报
回复
你这两个文件大小相等吗?
registered
2004-07-31
打赏
举报
回复
建议检查一下程序中的其他错误吧
两个不同大小的文件 size 不可能相同
Android代码-安卓多渠道打包
Channel
Util.get
Channel
(Context context)//同样来自 AndroidMulti
Channel
BuildTool License The MIT License (MIT) Copyright (c) 2016 花开堪折枝 Permission is hereby granted, free of charge, to any person ...
详解java NIO之
Channel
(通道)
它可以通过在一个打开的 RandomAccessFile、FileInputStream 或 FileOutputStream 对象上调用 get
Channel
() 方法来获取。File
Channel
可以用于读取和写入文件数据。例如: ```java // 创建文件输出字节流 ...
java海量数据读写优化方案
对大数据文本文件读取(按行读取)的优化,目前常规的方案有三种,第一种LineNumberReader,第二种RandomAccessFile,第三种是内存映射文件在RandomAccessFile基础上调用get
Channel
().map(...);代码提供在...
frhp-wsn:使用 FTSP 的无线传感器网络中的跳频 - 在 MicaZ 和 TelosB 平台上测试
使用 FTSP 进行时间同步的 WSN ... 添加 int get
Channel
(uint32_t globalClock) - 将全局时间戳映射到通道 控制流 - <startDone> => start local timer LocalClock => set beacon
channel
- => get local t
nos-epg-scrapper
美国 EPG 刮刀 ... get
Channel
(
channel
Id , cb ) ; => { "name" : "+TVI" , "logo" : "//images.nos.pt/EPG
Channel
Images/MAISTVISD.png" , "acronym" : "MAISTVISD" , "progs" : { "18" : [ { "id
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章