当前位置: 首页>>代码示例>>Java>>正文


Java FileChannel类代码示例

本文整理汇总了Java中java.nio.channels.FileChannel的典型用法代码示例。如果您正苦于以下问题:Java FileChannel类的具体用法?Java FileChannel怎么用?Java FileChannel使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


FileChannel类属于java.nio.channels包,在下文中一共展示了FileChannel类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: openReader

import java.nio.channels.FileChannel; //导入依赖的package包/类
private FileChannel openReader(long generationId) throws IOException {
    ensureOpen();
    if (readChannels.containsKey(generationId)) {
        return readChannels.get(generationId);
    }
    try {
        Path translogFilePath = this.translogPath.resolve(getFileNameFromId(tmpTranslogGeneration.get()));
        if (!Files.exists(translogFilePath)) {
            return null;
        }
        // maybe a lot of readers try to open reader and put it to readChannel cache, because read lock is shared
        FileChannel readChannel = FileChannel.open(translogFilePath, StandardOpenOption.READ);
        FileChannel originReadChannel = readChannels.putIfAbsent(generationId, readChannel);
        if (originReadChannel != null) {
            IOUtils.close(readChannel);
            return originReadChannel;
        } else {
            return readChannel;
        }
    } catch (Throwable e) {
        throw e;
    }
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:24,代码来源:LocalTranslog.java

示例2: truncateFileAtURL

import java.nio.channels.FileChannel; //导入依赖的package包/类
@Override
public long truncateFileAtURL(LocalFilesystemURL inputURL, long size) throws IOException {
       File file = new File(filesystemPathForURL(inputURL));

       if (!file.exists()) {
           throw new FileNotFoundException("File at " + inputURL.uri + " does not exist.");
       }

       RandomAccessFile raf = new RandomAccessFile(filesystemPathForURL(inputURL), "rw");
       try {
           if (raf.length() >= size) {
               FileChannel channel = raf.getChannel();
               channel.truncate(size);
               return size;
           }

           return raf.length();
       } finally {
           raf.close();
       }


}
 
开发者ID:alex-shpak,项目名称:keemob,代码行数:24,代码来源:LocalFilesystem.java

示例3: isId3Tag

import java.nio.channels.FileChannel; //导入依赖的package包/类
/**
 * Is ID3 tag
 *
 * @param fc
 * @return
 * @throws IOException
 */
public static boolean isId3Tag(FileChannel fc) throws IOException
{
    if (!isID3V2Header(fc))
    {
        return false;
    }
    //So we have a tag
    ByteBuffer bb = ByteBuffer.allocateDirect(FIELD_TAG_SIZE_LENGTH);
    fc.position(fc.position() + FIELD_TAGID_LENGTH + FIELD_TAG_MAJOR_VERSION_LENGTH + FIELD_TAG_MINOR_VERSION_LENGTH + FIELD_TAG_FLAG_LENGTH);
    fc.read(bb);
    bb.flip();
    int size = ID3SyncSafeInteger.bufferToValue(bb);
    fc.position(size + TAG_HEADER_LENGTH);
    return true;
}
 
开发者ID:GlennioTech,项目名称:MetadataEditor,代码行数:23,代码来源:AbstractID3v2Tag.java

示例4: writeFileFromBytesByChannel

import java.nio.channels.FileChannel; //导入依赖的package包/类
/**
 * 将字节数组写入文件
 *
 * @param file    文件
 * @param bytes   字节数组
 * @param append  是否追加在文件末
 * @param isForce 是否写入文件
 * @return {@code true}: 写入成功<br>{@code false}: 写入失败
 */
public static boolean writeFileFromBytesByChannel(final File file, final byte[] bytes, final boolean append, final boolean isForce) {
    if (bytes == null) return false;
    FileChannel fc = null;
    try {
        fc = new FileOutputStream(file, append).getChannel();
        fc.position(fc.size());
        fc.write(ByteBuffer.wrap(bytes));
        if (isForce) fc.force(true);
        return true;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    } finally {
        CloseUtils.closeIO(fc);
    }
}
 
开发者ID:weiwenqiang,项目名称:GitHub,代码行数:26,代码来源:FileIOUtils.java

示例5: writeFileFromBytesByMap

import java.nio.channels.FileChannel; //导入依赖的package包/类
/**
 * 将字节数组写入文件
 *
 * @param file    文件
 * @param bytes   字节数组
 * @param append  是否追加在文件末
 * @param isForce 是否写入文件
 * @return {@code true}: 写入成功<br>{@code false}: 写入失败
 */
public static boolean writeFileFromBytesByMap(final File file, final byte[] bytes, final boolean append, final boolean isForce) {
    if (bytes == null || !createOrExistsFile(file)) return false;
    FileChannel fc = null;
    try {
        fc = new FileOutputStream(file, append).getChannel();
        MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, fc.size(), bytes.length);
        mbb.put(bytes);
        if (isForce) mbb.force();
        return true;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    } finally {
        CloseUtils.closeIO(fc);
    }
}
 
开发者ID:weiwenqiang,项目名称:GitHub,代码行数:26,代码来源:FileIOUtils.java

示例6: waitForMuxing

import java.nio.channels.FileChannel; //导入依赖的package包/类
/**
 * At this point, we are still muxing, and trying to read beyond muxed data.
 *
 * We park here and wait until it is available.
 */
private int waitForMuxing(Muxer muxer, long maxPosition, FileChannel fileChannel, int fileHandle, MuxedFile muxedFile)
		throws IOException, InterruptedException {
	long currentSize = 0;
	while (maxPosition >= (currentSize = fileChannel.size())) {
		State state = muxer.state();
		switch (state) {
			case RUNNING:
				logger.debug("Want to read @ {} (file is {}), so waiting for {}", maxPosition, currentSize, muxer);
				sleeper.sleep(MUX_WAIT_LOOP_MS);
				break;
			case SUCCESSFUL:
				logger.debug("Done waiting to read @ {}", maxPosition, muxer);
				return SUCCESS;
			case FAILED:
				return muxingFailed(fileHandle, muxedFile, muxer);
			default:
				logger.error("BUG: Unhandled state {} in muxer {}", state, muxer);
				return BUG;
		}
	}
	logger.debug("Done waiting to read @ {}", maxPosition, muxer);
	return SUCCESS;
}
 
开发者ID:tfiskgul,项目名称:mux2fs,代码行数:29,代码来源:MuxFs.java

示例7: shouldReleaseTaskStateDirectoryLock

import java.nio.channels.FileChannel; //导入依赖的package包/类
@Test
public void shouldReleaseTaskStateDirectoryLock() throws Exception {
    final TaskId taskId = new TaskId(0, 0);
    final File taskDirectory = directory.directoryForTask(taskId);

    directory.lock(taskId, 1);
    directory.unlock(taskId);

    try (
        final FileChannel channel = FileChannel.open(
            new File(taskDirectory, StateDirectory.LOCK_FILE_NAME).toPath(),
            StandardOpenOption.CREATE,
            StandardOpenOption.WRITE)
    ) {
        channel.tryLock();
    }
}
 
开发者ID:YMCoding,项目名称:kafka-0.11.0.0-src-with-comment,代码行数:18,代码来源:StateDirectoryTest.java

示例8: delete

import java.nio.channels.FileChannel; //导入依赖的package包/类
/**
 * Delete Tag
 *
 * @param file to delete the tag from
 * @throws IOException if problem accessing the file
 *                     <p/>
 */
//TODO should clear all data and preferably recover lost space and go upto end of mp3s
public void delete(RandomAccessFile file) throws IOException {
    // this works by just erasing the "ID3" tag at the beginning
    // of the file
    byte[] buffer = new byte[FIELD_TAGID_LENGTH];
    //Read into Byte Buffer
    final FileChannel fc = file.getChannel();
    fc.position();
    ByteBuffer byteBuffer = ByteBuffer.allocate(TAG_HEADER_LENGTH);
    fc.read(byteBuffer, 0);
    byteBuffer.flip();
    if (seek(byteBuffer)) {
        file.seek(0L);
        file.write(buffer);
    }
}
 
开发者ID:openaudible,项目名称:openaudible,代码行数:24,代码来源:AbstractID3v2Tag.java

示例9: readFile2BytesByMap

import java.nio.channels.FileChannel; //导入依赖的package包/类
/**
 * 读取文件到字节数组中
 *
 * @param file 文件
 * @return 字符数组
 */
public static byte[] readFile2BytesByMap(final File file) {
    if (!isFileExists(file)) return null;
    FileChannel fc = null;
    try {
        fc = new RandomAccessFile(file, "r").getChannel();
        int size = (int) fc.size();
        MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_ONLY, 0, size).load();
        byte[] result = new byte[size];
        mbb.get(result, 0, size);
        return result;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    } finally {
        CloseUtils.closeIO(fc);
    }
}
 
开发者ID:Wilshion,项目名称:HeadlineNews,代码行数:24,代码来源:FileIOUtils.java

示例10: testUnreadableChannel

import java.nio.channels.FileChannel; //导入依赖的package包/类
private static void testUnreadableChannel() throws Exception {
    File blah = File.createTempFile("blah2", null);
    blah.deleteOnExit();
    FileOutputStream fos = new FileOutputStream(blah);
    try {
        fos.write(new byte[128]);
        FileChannel fc = fos.getChannel();
        try {
            fc.read(ByteBuffer.allocate(256),1);
            throw new RuntimeException("Expected exception not thrown");
        } catch(NonReadableChannelException e) {
            // Correct result
        }
    } finally {
        fos.close();
        blah.delete();
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:19,代码来源:Pread.java

示例11: LockExclusive

import java.nio.channels.FileChannel; //导入依赖的package包/类
public boolean LockExclusive(File targetFile) {

            if (targetFile == null) {
                return false;
            }
            try {
                File lockFile = new File(targetFile.getParentFile().getAbsolutePath().concat("/lock"));
                if (!lockFile.exists()) {
                    lockFile.createNewFile();
                }
                RandomAccessFile randomAccessFile = new RandomAccessFile(lockFile.getAbsolutePath(), "rw");
                FileChannel channel = randomAccessFile.getChannel();
                java.nio.channels.FileLock lock = channel.lock();
                if (!lock.isValid()) {
                    return false;
                }
                RefCntInc(lockFile.getAbsolutePath(), lock, randomAccessFile, channel);
                return true;
            } catch (Exception e) {
                return false;
            }
        }
 
开发者ID:codehz,项目名称:container,代码行数:23,代码来源:FileUtils.java

示例12: position

import java.nio.channels.FileChannel; //导入依赖的package包/类
public FileChannel position(long newPosition) throws IOException {
    ensureOpen();
    if (newPosition < 0)
        throw new IllegalArgumentException();
    synchronized (positionLock) {
        long p = -1;
        int ti = -1;
        try {
            begin();
            ti = threads.add();
            if (!isOpen())
                return null;
            do {
                p  = position0(fd, newPosition);
            } while ((p == IOStatus.INTERRUPTED) && isOpen());
            return this;
        } finally {
            threads.remove(ti);
            end(p > -1);
            assert IOStatus.check(p);
        }
    }
}
 
开发者ID:lambdalab-mirror,项目名称:jdk8u-jdk,代码行数:24,代码来源:FileChannelImpl.java

示例13: writeNewMetadataLargerButCanUseFreeAtom

import java.nio.channels.FileChannel; //导入依赖的package包/类
/**
 * We can fit the metadata in under the meta item just by using some of the padding available in the {@code free}
 * atom under the {@code meta} atom need to take of the side of free header otherwise might end up with
 * solution where can fit in data, but can't fit in free atom header.
 *
 * @param fileReadChannel
 * @param fileWriteChannel
 * @param neroTagsHeader
 * @param sizeOfExistingMetaLevelFreeAtom
 * @param newIlstData
 * @param additionalSpaceRequiredForMetadata
 * @throws IOException
 * @throws CannotWriteException
 */
private void writeNewMetadataLargerButCanUseFreeAtom(FileChannel fileReadChannel, FileChannel fileWriteChannel, Mp4BoxHeader ilstHeader, Mp4BoxHeader neroTagsHeader, int sizeOfExistingMetaLevelFreeAtom, ByteBuffer newIlstData, int additionalSpaceRequiredForMetadata) throws IOException, CannotWriteException
{
    int newFreeSize = sizeOfExistingMetaLevelFreeAtom - (additionalSpaceRequiredForMetadata);
    logger.config("Writing:Option 5;Larger Size can use meta free atom need extra:" + newFreeSize + "bytes");

    writeDataUptoIncludingIlst(fileReadChannel, fileWriteChannel, ilstHeader, newIlstData);

    //Create an amended smaller freeBaos atom and write it to file
    Mp4FreeBox newFreeBox = new Mp4FreeBox(newFreeSize - Mp4BoxHeader.HEADER_LENGTH);
    fileWriteChannel.write(newFreeBox.getHeader().getHeaderData());
    fileWriteChannel.write(newFreeBox.getData());

    //Skip over the read channel old free atom
    fileReadChannel.position(fileReadChannel.position() + sizeOfExistingMetaLevelFreeAtom);
    writeDataAfterIlst(fileReadChannel, fileWriteChannel, neroTagsHeader);
}
 
开发者ID:GlennioTech,项目名称:MetadataEditor,代码行数:31,代码来源:Mp4TagWriter.java

示例14: main

import java.nio.channels.FileChannel; //导入依赖的package包/类
public static void main(String[] args) throws Exception {
    try (RandomAccessFile aFile = new RandomAccessFile("data/data.txt", "rw")) {
        FileChannel inChannel = aFile.getChannel();

        ByteBuffer buf = ByteBuffer.allocate(1024);

        int bytesRead = inChannel.read(buf);
        while (bytesRead != -1) {

            System.out.println("Read " + bytesRead);
            buf.flip();

            while (buf.hasRemaining()) {
                System.out.print((char) buf.get());
            }
            System.out.print("\n");
            buf.clear();
            bytesRead = inChannel.read(buf);
        }
    }
}
 
开发者ID:vitaly-chibrikov,项目名称:otus_java_2017_06,代码行数:22,代码来源:NioMain.java

示例15: releaseFile

import java.nio.channels.FileChannel; //导入依赖的package包/类
private static void releaseFile(final FileChannel channel) {
  final File file = file2Channel.reversedGet(channel);
  if (file == null) return;
  synchronized (file) {
    Integer count = channel2ClientsCount.get(channel);
    if (count == null) return;//already removed
    if (count > 1) {
      channel2ClientsCount.put(channel, --count);
    } else {
      channel2ClientsCount.remove(channel);
      file2Channel.reversedRemove(channel);
      try {
        channel.close();
      } catch (IOException ex) {
        LogManager.log("can't close channel", ex);
      }
    }
  }
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:20,代码来源:ChannelUtil.java


注:本文中的java.nio.channels.FileChannel类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。